共计 1529 个字符,预计需要花费 4 分钟才能阅读完成。
需求:两台服务器(A、B),在服务器 A 上存放着大量的图片,需要在每天夜里三点同步到服务器 B,源目录和目的目录都是 /image
启用程序:rsync
服务器 A 上的配置:
1、/etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connectionts = 6
read only = yes
hosts allow = 192.168.95.0/24
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[image]
comment = image
path = /image/
ignore errors
list = no
auth users = root
secrets file = /etc/rsyncd.passwd
2、/etc/rsyncd.passwd
root:test
完成上面的配置后运行
# rsync –daemon
如果提示没有找到 rsyncd.passwd 文件则说明这个文件没有在默认的 /etc/ 路径下或者没有创建,只要把这个文件移动过去就可以了
服务器 B 上的配置:
/etc/rsync.passwd
dongpi2014
这里要注意,服务器 A 和服务器 B 上对于密码文件的写法是不一样的,服务器 A 的密码文件需要记录用户名,而服务器 B 的密码文件不需要记录用户名。
之后执行命令
rsync -arv –password-file=/etc/rsyncd.passwd rsync://root@192.168.95.11/test /image/
这样就开始同步了
注意 :
如果有以下的报错:
@ERROR: Unknown module ‘xxx’
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
这个报错表明密码文件的权限有问题,正常的密码文件权限应为 600
The –password-file option may only be used when accessing an rsync daemon.
这个报错表明服务器端没有执行 rsync –daemon 命令(没有启动服务)
@ERROR: auth failed on module xxxxx
这个报错表明服务器 A 和服务器 B 里面的用户名密码有问题,有可能是服务器 B 里面用户名密码格式问题。
除了以上方法外,还可以用 expect 的自动交互脚本完成
#!/usr/bin/expect
set timeout 3000
spawn rsync -avcz –delete root@192.168.95.11:/image/ /image
expect “password:”
send “dongpi2014\r”
expect “]*”
exit
interact
利用 inotifywait 监控主机文件和目录 http://www.linuxidc.com/Linux/2013-03/81075.htm
利用 inotify+rsync 实现 Linux 文件批量更新 http://www.linuxidc.com/Linux/2012-01/52132.htm
inotify-tools+rsync 实时同步文件安装和配置 http://www.linuxidc.com/Linux/2012-06/63624.htm
rsync 同步完整配置 http://www.linuxidc.com/Linux/2013-06/85781.htm
CentOS 6.5 下 Rsync 远程同步 http://www.linuxidc.com/Linux/2014-05/101084.htm