rsync同步两台服务器

2022-07-03 10:51:33 浏览数 (1)

需求:两台服务器(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 "dongpi2014r"

expect "]*"

exit

interact

0 人点赞