本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

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

发布:TangLu2018-6-28 19:10分类: 系统管理 标签: 备份 rsync 同步

rsync命令是Linux系统下的一个远程数据同步工具,该工具除了可以像cp命令一样在本地复制文件,还可以快速的同步多台主机间的文件,并且都可以实现差异化同步,只传送两端服务器上文件不同的部分,不用每次都进行完整传送,节约了带宽,提升了效率。 在使用rsync做备份前需要考虑一些问题,这样才能有条不紊的进行工作:

要用rsync备份什么?

Web应用程序配置文件,如Apache、Nginx的conf文件

MySQL数据库配置文件,如/etc/my.cnf

MySQL数据文件,通过mysqldump等命令导出或者迁移数据目录

MySQL的日志文件,如二进制日志、慢查询日志、错误日志

应用程序日志,如访问日志、错误日志

静态数据文件,如图片

备份服务器目录如何规划?

/data/mysql/

/data/webapp/nginx

/data/webapp/apache

……

如何备份?

实时同步备份、非实时异步备份、同IDC备份、垮IDC备份

备份保留时间?

因为备份数据也需要占据空间,那么需要考虑好备份数据需要保留一个月还是更久时间?

备份恢复校验?

定期测试备份数据的完整性,用测试机恢复数据检验

备份服务器挂了怎么办?

是否有对备份服务器再做备份?


做好上述规划后,看看rsync的三种工作模式(在客户端和服务器端都需要安装好rsync服务)

1、类似cp的本地传输

2、类似scp的远程传输

3、建立守护进程

可以通过man rsync看到三种工作模式的语法介绍

rsync1.jpg 

rsync常用选项(man 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

 

1、本地数据传输示例:

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


2、远程数据传输示例:

    拉取数据(从远端服务器拷贝到本地服务器):

    rsync    -rgtopDl    root@192.168.1.1:/etc/fstab    /bak/


    推送数据(从本地服务器拷贝到远端服务器):

    rsync    -rgtopDl    -e  'ssh -p 22'    /etc/fstab    root@192.18.1.1:/bak/


3、以守护进程模式工作(主要方式)

将A服务器作为备份服务器并部署好rsync服务,其他客户端主机可以把本地数据推送到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、如果是推送数据,检查配置文件中的用户是否对目标目录拥有写权限

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

已有 0/2612 人参与

发表评论:

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

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