rsync 简介

如果需要定期传送大量数据而更改的数据量不是很大,则适用 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。 必须手动解决所有冲突。