【系统运维】数据同步工具rsync使用教程

TangLu 5345 2021-08-23

一、Rsync工具介绍

rsync是一款数据同步工具,不管是应用配置文件还是各种数据文件,都可以通过本地传输、scp远程传输、守护进程传输三种工作模式来实现数据同步,还可以集合inotify工具来实时同步。在数据的传输过程中可以采用增量同步的方式,节约带宽,提升效率。在Linux系统下安装rsync只需要通过一条yum命令即可完成:

yum install rsync -y  #服务端和客户端都需要安装


二、Rsync常用选项

-a:最常用的选项,等同于rtogpDl一起使用,可以实现递归传输并保持所有属性(实测发现如果服务端是Windows,只能用-r选项,使用-a选项会出错)
-v:显示传输过程
-z:数据在传输过程中要进行压缩,提高效率,和tar命令里的-z作用一样
-r:递归传输,传输目录需要该参数
-t:保持文件时间信息一致,如果目标服务器的文件时间和源服务器文件时间一致则不会传送
-o:保持文件属主信息
-p:保持文件权限信息
-g:保持文件所属组信息
-D:Devices,代表保持设备文件的信息
-l:保持软连接信息,大写的-L会把软连接的源文件也拷贝过去
-e:指定使用的信道协议,如'ssh -p 22' 
--delete:强制目标和源数据一致,如果某文件在目标服务器存在而源服务器不存在的话,会删除该文件
--exclude:过滤指定文件,支持通配符

rsync2.jpg


三、Rsync命令示例

· 使用rsync实现本地数据传输(和cp命令一样,一般不会这样用)

rsync  -avz  /etc/fstab    /bak/      #拷贝fstab文件到/bak目录下
rsync -avz  --exclude=test1.txt  --exclude=test3.txt /root  root@192.168.1.1:/bak  #排除指定文件不进行传输


· 使用rsync实现远程数据传输

#拉取数据(从远端服务器拷贝到本地服务器)
rsync  -rgtopDl  root@192.168.1.1:/etc/fstab  /bak/

#推送数据(从本地服务器拷贝到远端服务器)
rsync  -rgtopDl  -e  'ssh -p 22'  /etc/fstab  root@192.18.1.1:/bak/


· 以守护进程模式工作(如将服务器A为备份服务器,其他客户端推送数据到服务器A)

1、编辑配置文件/etc/rsyncd.conf,该文件若不存在则手动创建

uid = root                              #rsync用户运行时的身份
gid = root
use chroot = yes                        # 安全相关
max connections = 2000                  # 并发连接数
timeout = 600                           # 超时时间(秒)
pid file =/var/run/rsyncd.pid           # 指定rsync的pid目录
lock file =/var/run/rsync.lock          # 指定rsync的锁文件
log file = /var/log/rsyncd.log          # 指定rsync的日志目录
ignore errors
read only = false
list = false                            #禁止列出模块信息
hosts allow = 10.*                      #白名单主机
hosts deny = 0.0.0.0/32
auth users = rsync_backup               #rsync虚拟用户,该用户可不存在于系统中
secrets file =/etc/rsync.password       #rsync虚拟用户密码文件

###########################模块#######################
[dbb]  #模块名,客户端需要指定该模块
path = /data2/bak/dbb  #模块对应的存放路径

[git]
path = /data2/bak/git


2、创建secrets file一项指定的文件,文件名可以自定义必须为600权限。在该文件中写入auth users一项中定义的用户名与密码,用户名密码用冒号分隔。该文件也需要在客户端存在,不过有一个区别,客户端的密码文件只用写密码即可,服务端的密码文件要写用户名:密码

echo "rsync_backup:12345678" >> /etc/rsync.password


3、上一步设置的密码文件是明文的,需要修改权限为600,否则后面服务也会报错

chmod    600    /etc/rsync.password


4、启动rsync服务,运行后记得查看端口,rsync默认端口是873

rsync    --daemon


  rsync5.jpg

        

5、客户端推送数据测试:

rsync -avz --progress --delete /data/git/gitlab-data-bak/backups/  rsync_backup@10.4.0.222::git


6、上面的命令需要交互输入密码才可以传输数据,如果是用作备份脚本的话就无法实现了,不过也有解决办法,在执行rsync命令时加上--password-file选项来指定密码文件,客户端的密码文件只用写密码就可以了,然后文件权限需要改为600

rsync -avz --progress --delete --password-file=/etc/rsync.password /data/git/gitlab-data-bak/backups/  rsync_backup@10.4.0.222::git


四、Windows系统中配置rsync

要在Windows下使用rsync的话使用的软件是cwRsync,在配置上会有部分出入。最主要的就是路径的识别方式会不一样,cwRsync不能直接识别磁盘,必须加上/cygdrive/这样的路径,比如/cygdrive/g/test=g:\test


五、rsync服务排错思路

1、检查配置文件路径是否正确,默认路径是/etc/rsyncd.conf

2、检查配置文件host allow,host deny允许的网段是否为客户端IP地址

3、检查配置文件path参数对应的目录是否存在,权限是否正确

4、检查rsync服务是否启动,ps aux | grep rsync

5、检查iptables和selinux是否为关闭状态

6、检查rsync配置用户和密码的文件权限是否为600,格式是否正确,文件路径和secrect files参数是否一致

7、如果是推送数据,检查配置文件中的用户是否对目标目录拥有写权限

版权声明
本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
上一篇:【系统运维】使用fail2ban防止服务器暴力破解
下一篇:MySQL基础教程(18)MySQL多实例部署方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

微信二维码