数据同步之rsync
作者:互联网
何为 rsync?
rsync 全称 remote synchronize,即 远程同步。
rsync 是 linux系统下的数据镜像备份工具,可用于本地文件复制,也可与其他 SSH、rsync 主机远程同步文件和目录。
使用 rsync 进行数据同步时,第一次进行全量备份,以后则是增量备份,利用 rsync 算法(差分编码),只传输差异部分数据。
如何 rsync?
1. 安装
yum install rsync
2. 配置
rsyncd 服务配置文件 /etc/rsyncd.conf: 默认使用端口 873,可通过配置项目 port 进行修改。 3. 三种工作模式 (1)本地复制 将本地目录 /var/rsync-src/ 下的文件同步至本地目录 /var/rsync-dest/rsync -r /var/rsync-src/ /var/rsync-dest/
(2)将本地数据同步到远程(push)
将本地目录 /var/rsync-src/ 下的文件同步至远程主机 10.101.11.11 目录 /var/rsync-dest/rsync -r /var/rsync-src/ username@10.101.11.11:/var/rsync-dest/
(3)将远程数据同步到本地(pull)
将远程主机 10.101.11.11 目录 /var/rsync-dest/ 下的文件同步至本地目录 /var/rsync-dest/rsync -r username@10.101.11.11:/var/rsync-dest/ /var/rsync-dest/
4. 两种认证协议
rsync 进行远程同步时需要认证远程主机的账号密码,支持两种认证方式:ssh 协议认证与 rsync 协议认证。 (1)ssh 认证 rsync 默认使用 ssh 协议进行远程登录和数据传输。远程主机需要开启 sshd 服务,rsync 在传输数据之前会先与远程主机进行一次 ssh 登录认证,然后通过 ssh 隧道进行数据传输。只需数据同步双方安装 rsync,但不必启动 rsyncd 服务。 可用 -e 选项指定协议:rsync -r -e ssh /var/rsync-src/ username@10.101.11.11:/var/rsync-dest/
也可省略 -e:
rsync -r /var/rsync-src/ username@10.101.11.11:/var/rsync-dest/
使用 ssh 认证与传输的缺点是不安全:
<1>登录认证使用的账号是远程主机可登录的系统账号,且需要手动输入密码;
<2>同步数据不受目录限制。
(2)rsync 协议认证 与 ssh 认证不同,rsync 协议认证不需要依赖远程主机的 sshd 服务,但需要远程主机开启 rsyncd 服务,本地 rsyncd 服务可不必开启。另外,rsync 协议认证不是直接使用远程主机的真实系统账号,而是虚拟账号和虚拟密码,且可实现无需手动输入密码,同时 rsync 协议认证需要配置模块对远程同步的目录进行限制。对比 ssh 认证,rsync 协议认证安全性更高。 下面直接实践。(远程主机为服务端,本地主机为客户端) <1>rsyncd 配置(远程) 这里定义了一个模块,名为 wjt-rsync。 path:模块 wjt-rsync 对应的真实目录 /var/rsync-dest。此处是对客户端可操作目录的限制。 auth users:用于数据认证与传输的虚拟账号 jet,客户端以虚拟账号 jet 登录成功后,会转换成配置项 uid 指定的系统用户身份 rsync,以该身份完成对目标目录的读写操作。此处是对客户端操作权限的限制。 secrets file:虚拟账号与密码设置文件。 fake super:true 表示 uid 可以不为 root。 read only:指定当前模块是否只读,false 表示可读写,即可上传文件,true 表示只读,不可上传文件,默认为 true。 write only:true 表示不能下载,false 表示可下载,默认为 false。 <2>创建用户与组(远程)useradd rsync -s /sbin/nologin -M
<3>设置虚拟账号密码(远程)
echo "jet:123456" > /etc/rsyncd.passwd chmod 600 /etc/rsyncd.passwd
<4>修改同步目录属主(远程)
chown -R rsync.rsync /var/rsync-dest
<5>开启 rsyncd 服务(远程)
systemctl start rsyncd
<6>请求同步(本地)
rsync -r /var/rsync-src/ jet@10.101.11.11::wjt-rsync
可通过配置本地密码文件实现无需手动输入密码:
echo 123456 > /etc/rsync.jet.passwd chmod 600 /etc/rsync.jet.passwd rsync -r /var/rsync-src/ jet@10.101.11.11::wjt-rsync --password-file=/etc/rsync.jet.passwd
或者通过环境变量进行设置:(变量名是固定的)
export RSYNC_PASSWORD=123456 rsync -r /var/rsync-src/ jet@30.102.74.67::wjt-rsync
5. 更多功能选项
(1)-a:归档模式,表示递归传输并保持文件属性。 (2)-v:显示同步过程中详细信息(文件列表)。可以使用"-vvvv"获取更详细信息。 建立链接: 开始传送增量文件列表:(部分截图) 开始传送文件数据:(部分截图) 同步完成,输出统计信息: (3)-z:传输时进行压缩提高效率。 (4)-n:模拟执行,不会真正执行。 (5)--delete:删除只存在于目标目录、不存在于源目录的文件。 (6)--exclude:排除某些文件或目录,不参与操作。 (7)--include:指定必须参与操作的文件或目录,--include必须在--exclude之前。 (8)--link-dest:基准目录,指定基准目录以后,rsync 会将源目录与基准目录之间变动的部分同步到目标目录。那些没变动的文件则会生成硬链接,硬链接指向上一次备份的对应文件,这与全量备份类似,但其数据量小很多(使用 rsync 实现全量备份的大致做法:使用备份时间命名区分多次备份的多个目标目录,每次备份之前,先将基准目录设置为上一次备份的目标目录,恢复时直接找到对应时间点的目录,里面的文件即是当时全部的文件数据)。 (9)--bwlimit:限速传输,单位 MB/s。 ......(还有更多功能选项)
标签:rsync,同步,dest,目录,认证,var,数据,远程 来源: https://www.cnblogs.com/wujuntian/p/16410235.html