rsync安装、配置、实例

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

一、语法

rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
rsync [OPTION]... [USER@]HOST:SRC [DEST]
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync选项控制:
 -a 归档模式,   -v 显示同步信息,   -z  传输过程中启用压缩
 --progress  是指显示出详细的进度情况
 --delete    是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

二、rsync有六种不同的工作模式

1、拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup
2、使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src 
3、使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data 
4、从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@192.168.88.134::www /backup 
5、从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /backup  root@192.168.88.134::www 
6、列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.88.134/www

三、配置rsync服务器端

1、修改rsync的配置文件(这个在centos7以上的版本已经没有了)
启动rsync服务,编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disable=no,并重启xinetd服务,如下:

[root@rsync-server ~]# vim /etc/xinetd.d/rsync 
#default: off 
# description: The rsync server is a good addition to an ftp server, as it # allows crc checksumming etc. 
service rsync { 
    disable = no 
    socket_type = stream 
    wait = no 
    user = root 
    server = /usr/bin/rsync 
    server_args = --daemon 
    log_on_failure += USERID 
}

[root@rsync-server ~]# /etc/init.d/xinetd restart 

2、创建rsync服务器配置文件/etc/rsyncd.conf

[root@rsync-server ~]# cat > /etc/rsyncd.conf << END
uid = root 
gid = root 
max connections=4 
port = 873  
hosts allow = 192.168.88.134, 192.168.88.136
#hosts deny = 0.0.0.0/32
log file=/var/log/rsyncd.log 
pid file=/var/run/rsyncd.pid 
lock file=/var/run/rsyncd.lock 
secrets file=/etc/rsync.passwd

[www] 
comment= backup code 
path=/home/wwwroot 
ignore errors
#list = no  #列表模式
read only = no 
#exclude=test  #这个是test不同步   
auth users=rsync 
END

[root@rsync-server ~]# echo "rsync:abc123" > /etc/rsync.passwd 
[root@rsync-server ~]# chmod 600 /etc/rsync.passwd    #这个一定要600的权限

备注:/etc/rsyncd.conf 的注解

secrets file #指定认证文件
[www]  模块名字,自己命名
comment   #注释,后面内容自己定义
path  #指定文件目录所在位置,这是必须指定
auth users     #同步验证时用的账号,如果没有这项就是匿名同步,client同步时不用用户名也能同步。

特别注意:在/etc/rsyncd.conf 配置文件中,不要出现中文,要不然在同步的时候可能会报错

3、启动服务端

[root@rsync-server ~]# systemctl start rsyncd     #或者用这种启动/usr/bin/rsync --daemon
[root@rsync-server ~]# ps -ef | grep rsync
[root@rsync-server ~]# netstat -tunlp | grep rsync

四、配置rsync客户端

1、[root@rsync-client ~]# cat /etc/rsyncd.conf   #文件内容为空就行。
2、[root@rsync-client ~]# systemctl start rsyncd   #启动rsync
3、[root@rsync-client ~]# echo "abc123" > /etc/rsync.passwd    #创建密码文件,名字随便定义
4、[root@rsync-client ~]# chmod 600 /etc/rsync.passwd   

到此客户端也就配置完成了,就可以同步数据了

五、同步数据

1、本地同步数据

语法:
       rsync  [ 选项... ]  本地目录1     本地目录2       #同步文件夹
       rsync  [ 选项... ]  本地目录1/     本地目录2      #同步数据

[root@rsync-client ~]# rsync -avz /etc /tmp (将/etc/的数据备份到/tmp/etc内) 
[root@rsync-client ~]# rsync -avz /etc/ /tmp (将/etc/的数据备份到/tmp内,并不复制目录本身)

2、将服务端的数据拉到本地

#以root用户身份查看远程主机192.168.88.134的/home目录
[root@rsync-client ~]# rsync [email protected]:/home

#同步文件
[root@rsync-client ~]# rsync -avz  [email protected]:/home /www 

#将配置文件中定义模块的内容同步到/test/
[root@rsync-client ~]# rsync -avz [email protected]::www /test/  --password-file=/etc/rsync.passwd
可选的参数:[--delete  --progress]

3、将本地的数据推到服务端

#将本地的/etc/hosts文件备份到远程主机
[root@rsync-client ~]# rsync -avz /etc/hosts [email protected]:/etc/

#将本地/test/文件夹中的内容同步到远程
[root@rsync-client ~]# rsync -avz --delete  --progress /test/ [email protected]::www --password-file=/etc/rsync.passwd

六、rsync常见错误

1、password file must not be other-accessible 
continuing without password file 
Password: 
解决:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd 

2、@ERROR: auth failed on module xxxxx 
rsync: connection unexpectedly closed (90 bytes read so far) 
rsync error: error in rsync protocol data stream (code 12) at io.c(150) 
解决:这是因为密码设置错了,无法登入成功,检查一下rsync.pwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。 

3、@ERROR: chroot failed 
rsync: connection unexpectedly closed (75 bytes read so far) 
rsync error: error in rsync protocol data stream (code 12) at io.c(150) 
解决:这是因为你在 rsync.conf 中设置的 path 路径不存在,要新建目录才能开启同步。 

4、ERROR: module is read only
rsync: read error: Software caused connection abort (113)
rsync error: error in rsync protocol data stream (code 12) at io.c(769) [sender=3.0.8]
解决:这是因为服务器端配置文件rsyncd.conf中read only = yes,为只读,即不允许客户端上传文件,改成no就可以了。

你可能感兴趣的:(自动化,rsync,数据同步备份)