Rsync数据同步
1.Rsync简介
1.1.什么是Rsync
- Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用。
- rsync监听端口:873
- rsync运行模式:C/S,B/S
1.2.Rsync特性
- 支持拷贝特殊文件如链接文件,设备等。
- 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
- 可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等属性均不改变-p。
- 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。
- 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)。
- 可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
- 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
1.3.Rsync企业工作场景
(1)由webServer向Rsync服务器上传
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0GO3uEc-1666762698910)(images/10.jpg)]
(2)由Rsync服务器向webServer拉取
(3)多Rsync服务器备份
(4)异地备份
2.Rsync的数据传输方式
2.1.rsync命令下载及常用参数
(1)Rsync软件包下载
yum -y install rsync
(2)常用参数
- -v:–verbose详细模式输出,传输时的进度等信息。
- -z:–compress传输时进行压缩,可以根据–compress-level=NUM可按级别压缩。
- -a:–archive归档模式,表示以递归的方式传输,保留文件属性。
- -r:–recursive递归模式传输。
- -t:–times保持文件时间信息。
- -o:–owner保持文件属主信息。
- -p:–perms保持文件权限。
- -g:–group保持文件属组信息。
- -P:显示同步的过程信息进度条。
- –delete:让源目录和目标数据保持一至。
2.2.本地数据文件复制
(1)创建lixiang.txt文件和目录lixiang
touch lixiang.txt mkdir lixiang
(2)将lixiang.txt追加内容并复制到lixiang目录下
echo "hello lixiang" >>lixiang.txt rsync lixiang.txt lixiang
(3)/root新建test目录,将lixiang目录整体复制到test下
rsync -zav lixiang test
2.3.远程数据文件复制
- 机器准备
- 192.168.159.11
- 192.168.159.12
(1)将11节点下的test目录发送到12节点
rsync -zav test rsync2:/root #rsync2是在/etc/hosts文件下做的映射,这里也可以写成ip
(2)将12节点的yumjisuan目录拉取到本机的root目录下
rsync -zav rsync2:/root/yunjisuan /root
2.4.守护进程数据文件复制
- 机器准备
- 192.168.159.22(rsync服务端)
- 192.168.159.23(rsync客户端)
(1)新增vi /etc/rsyncd.conf配置文件
#用户id uid = rsync #组id gid = rsync #程序安全设置 use chroot = no #客户端连接数 max connections = 200 #进程号文件位置 pid file = /var/run/rsyncd.pid #进程锁文件位置 lock file = /var/run/rsync.lock #日志文件位置 log file = /var/run/rsyncd.log #连接超时时间 timeout = 300 #3.1版本以上要加这个 fake super = yes #模块名称 [backup] #同步数据的目录 path = /backup #有错误时忽略 ignore errors #只读模式(true为只读,false为可读可写) read only = false #阻止远程列表 list = false #允许访问的IP hosts allow = 192.168.159.0/24 #禁止访问的IP hosts deny = 0.0.0.0/32 #虚拟用户 auth users = rsync_backup #存放用户和密码的文件 secrets file = /etc/rsync.password
(2)创建密码文件vi /etc/rsync.password
rsync_backup:123456
(3)给/etc/rsync.password降权
chmod 600 /etc/rsync.password
(4)创建程序用户rsync
useradd -M -s /sbin/nologin rsync
(5)守护进程启动rsync
rsync --daemon
(6)12客户端节点新增密码文件vi /etc/rsync.password
123456
(7)给/etc/rsync.password降权
chmod 600 /etc/rsync.password
(8)测试传输文件到11服务器节点
rsync -zav inotify.sh rsync_backup@192.168.159:23::backup --password-file=/etc/rsync.password
3.Rsync企业应用
3.1.Rsync应用场景及风险提示
- 执行–delete参数从rsync服务器端往rsync客户端拉取数据时,一定要小心,最好不用,它比从rsync客户端带–delete参数王rsync服务端推送危险的多。
- 客户端带–delete参数往服务端推送仅删除服务端模块下的数据,而前者有能力删除rynsc客户端本地的所有数据包阔根下的所有目录。
- 注意:–delete参数一定要放在客户端去执行,客户端上传的时候携带。
- **rsync推送企业的工作场景:**备份–delete风险 本地有啥,远端就有啥,本地没有的远端有也要删除。服务器端的目录数据可能丢失。
- **rsync拉取企业的工作场景:**代码发布,下载。–delete风险 远端有啥,本地(客户端)就是啥,远端没有本地有也要删除。本地的目录数据可能丢失。
3.2.Rsync的优缺点
(1)Rsync优点
- 增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)。
- 远程SHELL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务。
(2)Rsync缺点
- 大量小文件时候同步的时候,比对时间较长,有的时候,同步过程中,rsync进程可能会停止,僵死了。
- 同步大文件,10G这样的大文件有时也会出问题,中断。未完整同步前,是隐藏文件,可以通过续传(–partial)等参数实现传输 。
- 一次性远程拷贝可以用scp,大量小文件要打成一个包再拷贝。(重要)
3.3.Rsync服务端排错思路
- 查看rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf。
- 查看配置文件里host allow,host deny,允许的IP网段是否是允许客户端访问的ip网段。
- 查看配置文件中path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组)。
- 查看rsync服务是否启动。查看命令为:ps -ef|grep rsync。端口是否存在netstat -antup |grep 873。
- 查看iptables防火墙和selinux是否开启允许rsync服务通过,也可以考虑关闭。
- 查看服务端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式为:用户名:密码,文件路径和配置文件里的secrect files参数对应。
- 如果是推送数据,要查看下,配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限。
3.4.Rsync客户端排错思路
- 查看客户端rsync配置的密码文件是否600的权限,密码文件格式是否正确,注意:仅需要有密码,并且和服务器端的密码保持一致。
- 用telnet连接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡)telnet 192.168.197.129 873。
置文件里的secrect files参数对应。
- 如果是推送数据,要查看下,配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限。
3.4.Rsync客户端排错思路
- 查看客户端rsync配置的密码文件是否600的权限,密码文件格式是否正确,注意:仅需要有密码,并且和服务器端的密码保持一致。
- 用telnet连接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡)telnet 192.168.197.129 873。
客户端执行命令时:rsync -avzP rsync_backup@192.168.197.129::backup /backup/ --password-file=/etc/rsync.password此命令的细节要记清楚,尤其192.168.197.129::backup 处的双冒号及其后的backup为模块名称。