如果需要定期传送大量数据而更改的数据量不是很大,则适用 rsync。 举例来说,创建备份时的情况往往就是这样。 另一种应用涉及临时服务器。 临时服务器是储存 Web 服务器的完整目录树的服务器,这些 Web 服务器定期镜像到 DMZ 中的 Web 服务器。
rsync 有两种操作方式。 可用于存档或复制数据。 要执行上述操作,目标系统上只需要有远程 shell,如 ssh。 不过,rsync 也可用作守护程序,为网络提供目录。
rsync 的基本操作方式不需要任何特殊配置。rsync 能直接将完整目录镜像到其他系统中。 举例来说,以下命令在名为 sun 的备份服务器上为 tux 的主目录创建了备份副本。
rsync -baz -e ssh /home/tux/ tux@sun:backup
以下命令用于回放该目录:
rsync -az -e ssh tux@sun:backup /home/tux/
到目前为止,该程序的操作方式与普通的复制工具 (如 scp) 的操作方式相差无几。
应该以“rsync”方式操作 rsync,以便充分利用其所有功能。 这需要在其中一个系统上启动 rsyncd 守护程序。 在文件 /etc/rsyncd.conf 中配置该守护程序。 例如,要使目录 /srv/ftp 可用于 rsync,请使用以下配置:
gid = nobody
uid = nobody
read only = true
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
[FTP]
path = /srv/ftp
comment = An Example
然后使用 rcrsyncdstart 启动 rsyncd。rsyncd 也可以在引导进程中自动启动。 通过在 YaST 提供的运行级别编辑器中激活此服务或通过手动输入命令 insservrsyncd,都可以完成上述设置。也可以使用 xinetd 来启动 rsyncd。 不过,建议只在很少使用 rsyncd 的服务器上采用这种启动方式。
下例还创建了一个列出所有连接的日志文件。 此文件储存在 /var/log/rsyncd.log 中。
随后可以从客户机系统测试传送。 请使用以下命令完成该操作:
rsync -avz sun::FTP
此命令列出服务器的 /srv/ftp 目录中现有的所有文件。 此请求还记录在日志文件 /var/log/rsyncd.log 中。 要启动实际的传送,请提供目标目录。 使用 . 表示当前目录。 例如:
rsync -avz sun::FTP .
默认情况下,使用 rsync 同步时不会删除任何文件。 如果应强制删除,必须明确指定附加选项 --delete。 为保证不删除任何较新的文件,可转而使用选项 --update。 必须手动解决所有冲突。