手机版
你好,游客 登录 注册
背景:
阅读新闻

Linux下配置Rsync实现文件同步

[日期:2017-12-06] 来源:Linux社区  作者:helonlihsmcn [字体: ]

Rsync的文件同步实现

一、rsync 简介

    Rsync(remote synchronize)是一个远程数据同步工具,简要的概括就是主机于主机之间的文件目录数据的一个同步。

   它的特性如下:
   可以镜像保存整个目录树和文件系统。
    可以很容易做到保持原来文件的权限、时间、软硬链接等等。
    无须特殊权限即可安装。
    快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
    安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
   支持匿名传输,以方便进行网站镜象
   度娘上面的解析。(我懒得看,可谓见其文,不如悟其理。看着我操作一遍立刻明白!)

  总的来说是一个容错、可靠、高效的文件同步工具 。 

二、环境需求(虚拟机上面搭建的环境)

系统:ceotos 6.5  内核:2.6.32-431.el6.x86_64

主机A:192.168.0.244/24        

主机B:192.168.0.144/24

rsync-3.1.2.tar.gz

三、搭建rsync

rsync在主机A上面配置:

注意:rsync最重要的2个文件    1、rsyncd.conf    配置文件

2、rsyncd.password  用户密码文件  

其他的rsyncd.motd  这些是次要的,这只是一个显示页面信息,类似于访问一个服务器的时候提示的一些广告似的信息。

本次操作中我在主机A的etc目录下面直接创建了上面三个文件。

-rw-r--r-- 1 root root 443 Aug 16 10:49 /etc/rsyncd.conf
-rw-r--r-- 1 root root 252 Aug 16 10:44 /etc/rsyncd.motd
-rw-r--r-- 1 root root  18 Aug 16 10:44 /etc/rsyncd.password

rsync.passwd:

nowview:nowcaster

rsync.motd:(打广告了)

*****************************************
*                                       *
*                Rsync                  *
*                                       *
*                                       *
*****************************************

rsyncd.conf:这里我只是主要测试这个文件同步的功能,你们需要其他更多的功能的话,可以自行添加相关参数模块即可,可以参考:

http://www.linuxidc.com/Linux/2015-10/123842.htm

#This is rsync conf######
uid = nowview  #需要添加的,以及下面的模块里面的目录backup的属性需要改为nowview用户的
gid = nowview  #关于这个uid跟gid没有处理好,后面在同步备份文件的时候后报错,文件权限不够。用root最保守,不过安全性。。这个需要自己认真调配置参数
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log #可以设置显示格式log format = %t %a %m %f %b
motd file = /etc/rsyncd.motd  #第一个打广告信息 - -
[backup]   #同步的模块的名称
path = /home/backup  #模块下面的同步具体路径
ignore errors
read only = false
list = false
hosts allow = *
hosts deny = 0.0.0.0/32
auth users = nowview    #用户名
secrets file = /etc/rsyncd.password
exclude =  www/ GR068/  #这是除了home目录的下www  跟GR068目录
comment = loading.....  #第二个打广告信息,下面测试的时候可以看到 - -

找一下rsync的主程序,一般安装在了  /usr/local/bin/rsync  

cp -a   /usr/local/bin/rsync   /usr/bin/rsync    放到bin下面

下面使用daemon启动rsync

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf 

ps看一下进程,rsync的默认端口是873  

[root@主机A-144 home]# ps -ef |grep rsync
root       5835      1  0 10:51 ?        00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
root       5864   1323  0 11:08 pts/1    00:00:00 grep --color rsync
 
[root@主机A-144 home]# netstat -lantup |grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      5835/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      5835/rsync          
 

继续。。。

想开机启动的话,把

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf   添加到/etc/rc.d/rc.local 下面即可
注意:1、这个rsyncd.passwd 文件 的所属组是root 如果你的当前用户比如是rsync那就是改成rsync即可
chown rsync.rsync /etc/rsyncd.password  
2、rsyncd.passwd  的权限改为600  否则密码无法访问
[root@主机A-144 ~]# chmod 600 /etc/rsyncd.password 
[root@主机A-144 ~]# ll -d /etc/rsyncd.password
-rw------- 1 root root 18 Aug 16 10:44 /etc/rsyncd.password
[root@主机A-144 ~]# 

在主机A添加nowview用户

useradd nowview

以上在主机A配置全部完毕!

四、测试

下面在主机B上面进行测试。

曾经在测试的时候出现过形形色色的问题(粗心--),我把这些问题归纳在一起。

注意:1、为了方便测试,我就把主机A和主机B的防火墙直接关闭掉,如果你对这方面有要求的话,就直接把873这个端口从两边打通即可。

2、主机B不用再做任何的配置和操作,只要保持连通性即可。除非你想免去密码访问,每次都输入密码使你心烦,那就在etc下面跟主机A一样创建一个密码文档,注意了。这个密码文档只需要填写密码即可。这个密码文档一样是600权限!

下面做简单的访问

[root@主机B-244 ~]# rsync -avzp  nowview@192.168.0.144::
*****************************************
*                                       *
*                Rsync                  *
*                                       *
*                                       *
*****************************************

下面测试,免除密码访问

rsync -avzp  --delete  nowview@192.168.0.144::backup  /backup244/ --password-file=/etc/rsyncd.password 

在主机B的根目录下面已经创建了backup244的备份目录了,现在把主机共享A模块(即/home/backup目录下的文档,全部备份过来backup244目录,免除密码访问,以及有删改的对应主机A的删改)

效果如下

主机A上面的20个文件

[root@主机A-144 backup]# pwd
/home/backup
[root@主机A-144 backup]# for a in `seq 20`;do touch $a.txt;done    #创建20个文件   
[root@主机A-144 backup]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 16 14:33 10.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 11.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 12.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 13.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 14.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 15.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 16.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 17.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 18.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 19.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 1.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 20.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 2.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 3.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 4.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 5.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 6.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 7.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 8.txt
-rw-r--r-- 1 root root 0 Aug 16 14:33 9.txt

主机B的效果如下

[root@主机B-244 /]# rsync -avzp  --delete  nowview@192.168.0.144::backup  /backup244/ --password-file=/etc/rsyncd.password 
*****************************************
*                                       *
*                Rsync                  *
*                                       *
*                                       *
*****************************************

receiving incremental file list
deleting 7897798798798789797/
deleting GGGGGGGGG
deleting 4564656566
./
1.txt
10.txt
11.txt
12.txt
13.txt
14.txt
15.txt
16.txt
17.txt
18.txt
19.txt
2.txt
20.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt

sent 410 bytes  received 988 bytes  2796.00 bytes/sec
total size is 0  speedup is 0.00
[root@主机B-244 /]# ls /backup244/
10.txt  12.txt  14.txt  16.txt  18.txt  1.txt   2.txt  4.txt  6.txt  8.txt
11.txt  13.txt  15.txt  17.txt  19.txt  20.txt  3.txt  5.txt  7.txt  9.txt

可以看到,全部文件备份过来了。

(-azvp参数是什么意思,参考上面的文档,有详细解析)

下面从主机B推数据推到服务器上面去(上面的是从主机A拉数据过来主机B)

主机A的/home/backup 目录为空目录

[root@主机A-144 backup]# ll
total 0
[root@主机A-144 backup]# pwd
/home/backup

主机B下面有一个文件和一个目录

[root@主机B-244 backYYY]# ll
总用量 8
-rw-r--r--. 1 root root 1857 7月  21 13:55 OO.txx
drwxr-xr-x  2 root root 4096 7月  21 14:04 Work
[root@主机B-244 backYYY]# du -sh Work/
116K    Work/
[root@主机B-244 backYYY]# pwd
/home/backYYY

下面开始推:

[root@主机B-244 backYYY]# rsync -avzq /home/backYYY/  nowview@192.168.0.144::backup  --password-file=/etc/rsyncd.password 
[root@主机B-244 backYYY]# 

可以看到主机A上面的/home/backup目录下的情况变化

[root@主机A-144 backup]# pwd
/home/backup
[root@主机A-144 backup]# ll
total 8
-rw-r--r-- 1 root root 1857 Jul 21 13:55 OO.txx
drwxr-xr-x 2 root root 4096 Jul 21 14:04 Work
[root@主机A-144 backup]# du -sh Work/
116K    Work/
[root@主机A-144 backup]# 

基本上rsync的推拉数据同步测试完毕。

#################################################################

五、总结

报错主要常见种类与解决:

1、rsync: chgrp "/Work/.yum.conf.VOzf5y" (in backup) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

这是在客户端(主机B)备份的时候会出现,文件权限的问题。

解决:把uid 跟gid的改成root 这是最快解决的途径,要不就是调一下配置文件参数,读写那里。

2、@ERROR: auth failed on module rsync
rsync error: error starting client-server protocol 

这种情况其实不仅仅是密码错误会报错,好多情况下它都会报。

解决:检查下面几点:(1)检查配置文件的参数secrets file 名称有没有打错,密码文件路径有没有错,密码格式主配置的是:用户名:密码  的格式,客户端的只有一个密码没有用户名。

(2)检查服务器有没有配置auth users = 用户  ,没配置用户的配置上,共享模块backup的路径目录/home/backup  这个backup的权限属性是不是对应auth users的用户的。

(3)、认真全面检查一遍配置文件,看到报错client-server protocol 这个的,一般牵涉的很多问题都有可能

3、password file must not be other-accessible 
continuing without password file 

解决:密码文档的权限改为600   有权限属性的最好改为改用户 auth users = 用户

4、No route to host 

主机间端口不通啊

解决:要不把iptables关闭,要不两边打通873端口

5、@ERROR: invalid gid nobody
rsync error: error starting client-server protocol 

配置文件报错gid nobody

解决:这个gid nobody在配置文件里面不能这么写,改成所属用户或者直接改root吧

总结:一般搞清楚配置文件里面部署的权限,所属组的权限问题。基本上好少报错了,基本上都是权限在报错。其他报错就是粗心大意导致的了。

【上述有错误的地方,希望各位给予指出,感谢】

CentOS 6.5 rsync+inotify实现数据实时同步备份 http://www.linuxidc.com/Linux/2016-11/137655.htm

rsync+inotify实现数据的实时同步 http://www.linuxidc.com/Linux/2017-01/139778.htm

rsync+inotify实现服务器之间文件实时同步详解  http://www.linuxidc.com/Linux/2016-11/137659.htm

Rsync结合Inotify 实时同步配置  http://www.linuxidc.com/Linux/2017-02/140877.htm

RSync实现数据备份  http://www.linuxidc.com/Linux/2017-06/144913.htm

inotify+rsync实现数据实时同步  http://www.linuxidc.com/Linux/2017-10/147901.htm

rsync+inotify实现数据的实时备份  http://www.linuxidc.com/Linux/2016-11/137630.htm

rsync+inotify实现数据自动同步  http://www.linuxidc.com/Linux/2017-03/141717.htm

使用rsync实现数据实时同步备份  http://www.linuxidc.com/Linux/2017-05/143462.htm

Rsync 的详细介绍请点这里
Rsync 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-12/149183.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款