我想将服务器A上的目录同步到服务器B上。
在服务器上,AI创建了一个文件rsyncd.conf
,内容如下:
uid = rsync
gid = rsync
use chroot = no
pid file = /var/run/rsyncd.pid
[share]
comment = share
path = /etc/dirtosync
read only = false
list = yes
hosts allow = *
auth users = rsync
secrets file = /etc/rsyncd.secrets
我在服务器 A 上创建了/etc/rsyncd.secrets
以下内容的文件:
rsync:rsync
我还在服务器 A 上创建了 pid 文件,以及用户 rsync 和密码 rsync。
在服务器 A 上,在文件上:/etc/default/rsync
我将值设置RSYNC_ENABLE
为true
,然后使用以下命令启动 rsync 守护程序:
/etc/initd/rsync start
在服务器A和服务器B上目录的所有者和组都是rsync。
我在机器 B 上启动了以下命令:
rsync -avzr rsync@<serverA>:/etc/dirtosync/* /etc/dirtosync/
我也在服务器 A 上尝试了该命令
rsync -avzr /etc/dirtosync/* rsync@<serverB>:/etc/dirtosync/
使用这两个命令的结果是一样的:当我启动命令时,文件只同步一次,但是之后如果我修改服务器 A 中的文件,它们就不会同步到服务器 B
我是否需要做其他事情来保持文件同步?
答案1
答案2
您也可以使用 lsyncd:https://github.com/axkibe/lsyncd。我至今还在使用,效果非常好。
答案3
您发布的语法rsync
假设您省略了机器的主机名/IP,但不使用rsync
您设置的共享。要使用共享,您需要按如下方式更改语法以使用共享:
rsync -av rsync@MACHINE-A::share/ /etc/dirtosync/
但是,这仍然无法在这些文件夹之间建立持续同步。您似乎想要的是这些文件夹的双向同步,您可以在 cron 中设置它,也可以开始使用Unison 文件同步软件。
Unison 的维护工作已经不怎么好了,我自己也没有用过,但我听说它很好用。它会跟踪您为同步而设置的目录中的文件更改,并定期使用rsync
或其他(可配置)方法复制这些文件。
如果您要使用rsync
-in-the-cron 路线,您将需要使用仅复制较新文件-u
的选项rsync
。但是,使用这种方法会遇到已删除文件重新出现的问题。