如何使用rsync工具来同步2台linux服务器的文件
如何使用rsync工具来同步2台linux服务器的文件
一、 简单使用
1. 本地同步
rsync [OPTION...] SRC...[DEST]
举例
rsync /etc/hosts /opt
rsync -avz /opt /mnt #相当于cp -ap /opt /mnt
rsync -avz --delete /old/ /tmp/ #相当于rm命令
2. 两台主机间同步
推送(从当前主机推送到另一台主机)
rsync -avzP -e 'ssh -p 22' /etc/ root@192.168.197.129:/tmp/
-e ‘ssh -p 22’ 表示以ssh的方式通过22端口推送,如果不写则默认端口为22,也可以不使用这一选项。执行后会提示输入root@192.168.197.129的密码,输入正确的密码后才执行文件同步操作,即将当前主机的/etc目录同步到192.168.197.129主机下的tmp目录。
考虑带宽限制
rsync -avz dbfile 192.168.197.129:/backup #没有给带宽做限制
rsync -avz --bwlimit=100 dbfile 192.168.197.129:/backup #限定了带宽
拉取
rsync -avzP -e 'ssh -p 22' root@192.168.197.129:/opt /tmp
表示从远程192.168.197.129的/opt目录(包含目录本身)拷贝到本地目录/tmp下
执行后同样会提示输入用户密码,输入正确的密码后才执行文件同步操作。
-e ‘ssh -p 22’ 表示通过ssh通道传输数据,可省略。
二、 以守护进程方式同步数据
1. 环境
主机网络参数设置:
主机名 | 网卡eth0 | 用途 | 角色 | 代号 |
---|---|---|---|---|
chensiqi | 192.168.197.133 | 同步源 | rsync客户端 | B-Server |
chensiqi2 | 192.168.197.129 | 同步目的地 | rsync服务端 | A-Server |
2. 需求
把B-Server主机的/home/b_source/目录下的文件同步到A-Server主机上的/home/a_dest/目录下。
3. 部署
3.1 A-Server的部署
3.1.1 编辑rsync服务的配置文件
首先确认软件是否安装:
rpm -qa rsync
显示的内容大致如:
rsync-3.0.6-12.el6.x86_64
编辑/etc/rsyncd.conf文件,如果不存在则重新创建,内容如下:
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /home/a_dest/
ignore errors
read only = false
list=false
hosts allow = 192.168.197.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_user1
secrets file = /etc/rsync.password
上面的backup小节配置了同步的目的路径“/home/a_dest/”,所以还要创建该路径
mkdir -p /home/a_dest
上面还配置了rsync的用户名为rsync_user1,以及存储该用户的密码文件为 /etc/rsync.password.
3.1.2 添加rsync程序的linux用户
useradd -M -s /sbin/nologin rsync
验证
cat /etc/passwd | grep rsync
cat /etc/group | grep rsync
3.1.3 启动rsync服务
rsync --daemon
验证
netstat -antup | grep rsync
3.1.4 更改同步目的路径的拥有者
chown -R rsync /home/a_dest
chgrp -R rsync /home/a_dest
验证
ls -ld /home/a_dest
3.1.5 添加rsync程序的账户名和密码
echo "rsync_user1:123456" >/etc/rsync.password
chmod 600 /etc/rsync.password #必须为600,否则失败
添加了用户名rsync_user1及密码123456。
注意 上面的/etc/rsync.password文件权限值必须配置为600,否则后面的同步操作不会成功!!!
3.1.6 设置开机启动
echo "rsync --daemon" >> /etc/rc.local
注意:
- 当然还可以用chkconfig rsync on命令,但是必须要编写适合chkconfig操作的脚本才行。
如何重启rsync服务?
pkill rsync #关闭rsync服务
rsync --daemon #启动rsync服务
至此rsync服务器端A-server配置完毕。
3.2 B-Server的部署
先确保rsync已经安装
rpm -qa rsync
3.2.1 配置rsync的密码文件
echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password #必须为600,否则失败
至此rsync客户端B-Server配置完毕。
4. 同步
4.1 推送
在B-Server上执行:把/home/b_source目录的文件推送到A-Server上的“backup”小节配置的目录(即“/home/a_dest/”)。
rsync -avz /home/b_source/ rsync_user1@192.168.197.129::backup --password-file=/etc/rsync.password
4.2 同步推送
在B-Server上执行:把/home/b_source目录的文件同步推送到A-Server上的“backup”小节配置的目录(即“/home/a_dest/”)。
rsync -avz --delete /home/b_source/ rsync_user1@192.168.197.129::backup --password-file=/etc/rsync.password
命令说明:
–delete :表示同步增,删,改(文件内容出现变化,也会同步的)
5. 扩展
5.1 拉取
在B-Server上执行:拉取A-Server上的backup小节配置的目录(即“/home/a_dest/”)文件到B-Server上的/home/b_source目录下。
rsync -avzP rsync_user1@192.168.197.129::backup /home/b_source/ --password-file=/etc/rsync.password
和推送相比,只是两个目录换了个位置。
5.2 同步拉取
在B-Server上执行:同步拉取A-Server上的backup小节配置的目录(即“/home/a_dest/”)文件到B-Server上的/home/b_source目录下。
rsync -avz --delete rsync_user1@192.168.197.129::backup /home/b_source/ --password-file=/etc/rsync.password
命令说明:
–delete :表示同步增,删,改(文件内容出现变化,也会同步的)
与同步推送相比:只是客户端目录放在了服务器端的后边。
5.2 排除文件
若需要排除文件,可以使用–exclude来设置:
rsync -avz --exclude=a --exclude=chen/3 --exclude=chen/4 rsync_user1@192.168.197.129::backup /home/b_source/ --password-file=/etc/rsync.password
5.3 通过列表文件实现排除
若需要排除文件,还可以使用–exclude-from来设置:
rsync -avz --exclude-from=/root/exclude.txt rsync_user1@192.168.197.129::backup /home/b_source/ --password-file=/etc/rsync.password
命令说明:
–exclude-from=文件的绝对路径 :引用一个排除列表,列表里只需要输入排除的文件名即可,每行一个文件名,如:
[root@xxx home]# cat /root/exclude.txt
my.log
my.ignore
my.txt