rsync

rsync 简介

rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录。

rsync基本特性

rsync

• 在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。

• 无论本地同步目录还是远程同步数据,首次运行时将会把全部文件拷贝一次,以后再运行时将只拷贝有变化的文件(对于新文件)或文件的变化部分(对于原有文件)。

• rsync 在首次复制时没有速度优势,速度不如 tar,因此当数据量很大时可以考虑先使用 tar 进行首次复制,然后再使用 rsync 进行数据同步。

rsync命令

rsync 命令基本格式为:
1)本地使用:
rsync [OPTION…] SRC… [DEST]

2)通过远程 Shell 使用:
拉: rsync [OPTION…] [[email protected]]HOST:SRC… [DEST]
推: rsync [OPTION…] SRC… [[email protected]]HOST:DEST

3)访问 rsync 服务器:
拉: rsync [OPTION…] [[email protected]]HOST::SRC… [DEST]
推: rsync [OPTION…] SRC… [[email protected]]HOST::DEST
拉: rsync [OPTION…] rsync://[[email protected]]HOST[:PORT]/SRC… [DEST]
推: rsync [OPTION…] SRC… rsync://[[email protected]]HOST[:PORT]/DEST

其中:

SRC: 是要复制的源位置

DEST: 是复制目标位置

若本地登录用户与远程主机上的用户一致,可以省略 [email protected]

使用远程 shell 同步时,主机名与资源之间使用单个冒号“:”作为分隔符

使用 rsync 服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符

当访问 rsync 服务器时也可以使用 rsync:// URL

“拉”复制是指从远程主机复制文件到本地主机(下载)

“推”复制是指从本地主机复制文件到远程主机(上传)

当进行“拉”复制时,若指定一个 SRC 且省略 DEST,则只列出资源而不进行复制

常用选项

rsync
rsync
rsync

注意:

在指定复制源时,路径是否有最后的 “/” 有不同的含义,例如:
• /home : 表示将整个 /home 目录复制到目标目录

• /home/ : 表示将 /home 目录中的所有内容复制到目标目录

基于ssh的rsync远程数据同步

192.168.76.150为服务器,192.168.76.156为客户端

1)在虚拟机中将/etc/hosts文件同步到新创建的/bak目录中

rsync -av /etc/hosts /bak

rsync

验证:

cd   /bak

cd   /etc

cat   hosts

rsync
2)
rsync
3)筛选rsync的传输目标

rsync -av --delete /iso --exclude “profile.d/” --prigress [email protected]:/mnt/
rsync
4)使用 --exclude-from/–include-from 选项

当 include/exclude 的规则较复杂时,可以将规则写入规则文件。使用规则文件可以灵活地选择传输哪些文件(include)以及忽略哪些文件(exclude)。

• 若文件/目录在剔除列表中,则忽略传输

• 若文件/目录在包含列表中,则传输

• 若文件/目录未被提及,也传输

包含(include)和排除(exclude)规则的语法如下:
• include PATTERN 或简写为 + PATTERN
• exclude PATTERN 或简写为 – PATTERN
PATTERN 的书写规则如下:
• 以 / 开头:匹配被传输的跟路径上的文件或目录
• 以 / 结尾:匹配目录而非普通文件、链接文件或设备文件
• 使用通配符
• *:匹配非空目录或文件(遇到 / 截止)
• **:匹配任何路径(包含 / )
• ?:匹配除了 / 的任意单个字符
• [:匹配字符集中的任意一个字符,如 [a-z] 或 [[:alpha:]]
• 可以使用转义字符 \ 将上述通配符还原为字符本身含义

5)配置匿名服务器

yum  install   rsync  -y

vi   /etc/rsync.conf

rsync

配置防火墙规则

firewall-cmd --add-service=rsyncd --per

firewall-cmd --reload

firewall-cmd --list-all

rsync
启动并

启用服务

systemctl  start   rsyncd

systemctl  enable   rsyncd

systemctl   status    rsyncd

rsync

在客户端测试

rsync -av rsync://192.168.76.150:/iso /mnt/

rsync