Rsync(remote sync)是 UNIX 及类 UNIX 平台下一款神奇的数据镜像备份软件, 它不像 FTP 或其他文件传输服务那样需要进行全备份, Rsync 可以根据数据的变化进行差异备份, 从而减少数据流量, 提高工作效率. 可以使用它进行本地数据或远程数据的复制, Rsync 可以使用 SSH 安全隧道进行加密数据传输. Rsync 服务器端定义源数据, Rsync 客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地, 如果源数据在服务器端被删除, 则客户端数据也会被删除, 以确保主机之间的数据是同步的. Rsync 使用 TCP 873 端口.
1. 搭建 Rsync 服务器
- # yum 安装
- yum install rsync
- # 启动 Rsync
- systemctl start rsyncd
- # 允许开机自启动
- systemctl enable rsyncd
- # 检查是否已经成功启动
- netstat -lnp |grep 873
因为 Rsync 是 Andrew Tridgell(Samba 的作者)与 Paul Mackerras 合作开发的软件, 所以 Rsync 配置文件与 Samba 配置文件比较相似. Rsync 主要分为三个配置文件, 分别是: rsyncd.conf(主配置文件),rsyncd.secrets(密码文件)和 rsyncd.motd(服务器信息文件).
下面的案例演示了如何共享 / common 目录, 为此, 我们需要创建 / common 目录, 并复制一些测试文件存放在该目录下. 本例需要手动创建配置文件
- mkdir /common
- cp /etc/init.d/*/common/
- #/etc/rsyncd.conf
- # 设置服务器信息提示文件名称, 在该文件中编写提示信息
- motd file=/etc/rsyncd.motd
- # 开启 Rsync 数据传输日志功能
- transfer logging=yes
- # 设置日志文件名称, 可以通过 1og format 参数设置日志格式
- log file=/var/1og/rsyncd.1og
- # 设置 Rsync 进程号保存文件名称
- pid file=/var/run/rsyncd.pid
- # 设置锁文件名称
- lock file=/var/run/rsync.lock
- # 设置服务器监听的端口号, 默认为 873
- port=873
- # 设置服务器所监听网卡接口的 IP 地址, 这里服务器 IP 地址为 192.168.5.5
- address=192.168.5.5
- # 设置进行数据传输时所使用的账户名称或 ID 号, 默认使用 nobody
- uid=nobody
- # 设置进行数据传输时所使用的组名称或 GID 号, 默认使用 nobody
- gid=nobody
- # 设置 user chroot 为 yes 后, rsync 会首先进行 chroot 设置, 将根映射到 path 参数路径下, 对客户端而言, 系统的根就是 path 参数所指定的路径. 但这样做需要 root 权限, 并且在同步符号连
接资料时仅会同步名称, 而内容将不会同步.
- use chroot=no
- # 是否允许客户端上传数据, 这里设置为只读.
- read only=yes
- # 设置并发连接数, 0 代表无限制. 超出并发数后, 如果依然有客户端连接请求, 则将会收到稍后重试的提示消息
- max connections=10
- # 模块, Rsync 通过模块定义同步的目录, 模块以 [name] 的形式定义, 这与 Samba 定义共享目录是一样的效果. 在 Rsync 中也可以定义多个模块
- [common]
- #comment 定义注释说明字串
- comment=web content
- # 同步目录的真实路径通过 path 指定
- path=/common
- # 忽略一些 IO 错误
- ignore errors
- #exclude 可以指定例外的目录, 即将 common 目录下的某个目录设置为不同步数据
- #exclude=test/
- # 设置允许连接服务器的账户, 账户可以是系统中不存在的用户
- auth users=zhangsan,wangwu
- # 设置密码验证文件名称, 注意该文件的权限要求为只读, 建议权限为 600, 仅在设置 auth users 参数后有效
- secrets file=/etc/rsyncd.secrets
- # 设置允许哪些主机可以同步数据, 可以是单个 IP, 也可以是网段, 多个 IP 与网段之间使用空格分隔
- hosts allow=192.168.5.0/255.255.255.0
- # 设置拒绝所有(除 hosts allow 定义的主机外)
- hosts deny=*
- # 客户端请求显示模块列表时, 本模块名称是否显示, 默认为 true
- list=false
接下来, 通过 echo 的方式创建密码文件 / etc/rsyncd.secrets, 在该文件中输入两个账户: zhangsan 账户的密码是 123,wangwu 账户的密码是 456. 需要注意的是, 密码文件不可以对所有的人开放可读权限, 为了安全, 建议设置权限为 600. 创建服务器提示信息文件并向该文件中导入欢迎词.
- echo "zhangsan:123"> /etc/rsyncd.secrets
- echo "wangwu:456">> /etc/rsyncd.secrets
- chmod 600 /etc/rsyncd.secrets
- echo "Welcome to access"> /etc/rsyncd.motd
- systemctl restart rsyncd
客户端同步数据
在客户端主机中同样是使用 rsync 命令进行初始化数据传输, 使用同样的程序.
- yum install rsync
- rsync -vzrtopg --progress [email protected]::common /test
rsync 命令的描述和用法如下.
描述: 一个快速, 多功能的远程 (或本地) 数据复制工具.
用法: 下表较全面地介绍了 rsync 的语法格式, SRC 表示源路径, DEST 表示目标路径.
本地复制 | |
rsync [选项] SRC... [DEST] | |
通过远程 shell 复制 | |
下载数据 | rsync [选项] [[email protected]]HOST:SRC…[DEST] |
上传数据 | rsync [选项] SRC... [[email protected]]HOST:DEST |
通过 rsync 远程复制 | |
下载数据 | Rsync [选项] [[email protected]]HOST::SRC…[DEST] |
Rsync [选项]rsync://[[email protected]]HOST[:PORT]/SRC…[DEST] | |
上传数据 | Rsync [选项]SRC…[[email protected]]HOST::DEST |
Rsync [选项]SRC...rsync://[[email protected]]HOST[:PORT]/DEST |
选项:-v,--verbose 显示详细信息
-q,--quiet 静默模式, 无错误信息
-a,--archive 归档模式, 主要保留文件属性, 等同于 - rlptgoD
-r,--recursive 递归
-b,--backup 如果目标路径已经存在同名文件, 将旧的文件重命名为~ filename, 可以使用 --suffix 指定不同的备份前缀.
--back-dir 将备份文件保存至指定目录
--suffix 指定备份文件前缀
-u,--update 如果目标地址中的文件比将要下载的文件新, 则不执行同步, 也就是说, 不会用旧的文件覆盖新的文件.
-l,--links 保留符号链接
-p,--perms 保留文件权限属性
-H,--hard-links 保留硬链接
-A,--acls 保留 ACL 权限
-X,--xattrs 保留文件附加属性
-o,--owner 保留文件所有者属性
-g,--group 保留文件所属组属性
--devices 保留设备文件
--specials 保留特殊文件
-D 等同于 - devices-specials
-t 保留修改时间属性
-W,--whole-file 不做增量检查, 直接复制全部文件
-e,--rsh=COMMAND 指定远程 shell
--existing 仅同步目标路径中已经有的文件, 不下载源路径下新的文件
--delete 删除那些仅在目标路径中存在的文件(源路径中不存在)
-z,--compress 传输过程中对数据进行压缩
--include=PATTERN 匹配不排除的文件
--exclude=PATTERN 匹配需要排除的文件
--progress 显示数据传输的进度信息
--partial 保留因故障未传输完成的文件
-P 等同于 --progress-partial
--password-file=FILE 指定密码文件, 将密码写入文件, 实现非交互式数据同步
--list-only 仅列出服务器模块列表, 需要 rsync 服务器设置 list=true
来源: http://www.bubuko.com/infodetail-3276010.html