ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据同步之rsync

2022-06-24 21:32:39  阅读:145  来源: 互联网

标签:rsync 同步 dest 目录 认证 var 数据 远程


何为 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有