启动 Rsync 守护进程以同步两台服务器之间的目录

hed*_*691 5 sync rsync services

我想将服务器 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
Run Code Online (Sandbox Code Playgroud)

我在服务器 A 上创建了/etc/rsyncd.secrets包含以下内容的文件:

rsync:rsync
Run Code Online (Sandbox Code Playgroud)

我还在服务器 A 上创建了 pid 文件,以及用户 rsync 和密码 rsync。

在服务器A,上档:/etc/default/rsync我把价值RSYNC_ENABLEtrue,我开始用命令rsync守护进程:

/etc/initd/rsync start
Run Code Online (Sandbox Code Playgroud)

在服务器 A 和服务器 B 上,目录的所有者和组是 rsync。

我在机器 B 上启动了命令:

rsync -avzr rsync@<serverA>:/etc/dirtosync/* /etc/dirtosync/
Run Code Online (Sandbox Code Playgroud)

我也在服务器A上试过命令

rsync -avzr /etc/dirtosync/* rsync@<serverB>:/etc/dirtosync/
Run Code Online (Sandbox Code Playgroud)

使用这两个命令,结果是相同的:当我启动命令时,文件只同步一次,但是如果我修改服务器 A 中的文件,它们不会同步到服务器 B

我是否必须做其他事情才能保持文件同步?

bai*_*ain 5

您误解了 rsync 的工作原理。rsync 不会自动复制更改 - 它不像 dropbox 或类似软件。rsync 每次运行时只同步文件一次。如果您想更频繁地同步,请将 rsync 命令放在 cron 脚本中(例如,查看/etc/cron.daily)。如果您想要自动同步更改的东西,如 dropbox 那样,那么请查看不同的项目,例如Sparkle ShareownCloud