本站所有文章均为原创,如您有所获益,恳请帮忙点击站内广告支持一下,您的帮助是我持续更新的动力!

远程数据同步工具rsync使用思路与配置教程

发布:TangLu2020-12-14 11:46分类: 系统管理 标签: 备份 rsync

一、Rsync工具介绍

rsync是一款数据同步工具,支持通过本地传输、scp远程传输、守护进程三种工作模式来实现数据的实时同步(实时同步需要结合inotify工具),并且可以采用增量同步的方式节约带宽,提升效率。 使用rsync时能备份的数据包括各种应用程序配置文件,如nginx.conf、应用日志文件、静态数据文件,如图片等。考虑备份的完整性,也建议定期恢复数据检验。如果备份的数据是否重要,可以对备份服务器再做备份。


二、Rsync安装与使用

1、使用yum安装rsync(服务端和客户端都需要安装)

yum install rsync -y

 

2、rsync常用选项

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

rsync2.jpg


三、Rsync命令示例

· 本地数据传输示例

rsync  -avz  /etc/fstab    /bak/      #拷贝fstab文件到/bak目录下


传输目录时排除指定文件

rsync -avz  --exclude=test1.txt  /root  root@192.168.1.1:/bak
rsync -avz  --exclude=test2.txt --exclude=test3.txt  /root  root@192.168.1.1:/bak


· 远程数据传输示例

#拉取数据(从远端服务器拷贝到本地服务器)
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,该文件需要手动创建,详细的参数可以man 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、如果是推送数据,检查配置文件中的用户是否对目标目录拥有写权限

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
版权所有:《Linux运维技术学习站点
文章标题:《远程数据同步工具rsync使用思路与配置教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-153.html  [生成短网址]
et_highlighter51

已有 0/4535 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~