rsync 守护进程模式小记

.rsync英文称为remote synchronizetion,可以在本地或者远程两台主机之间快速传输数据,做到远程同步备份。相比scp,cp的全量备份,rsync还可以增量备份。

 

远程方式:(普通推,拉方式)

 

#拉取远程服务器目录及目录下的文件
[root@web01 ~]# rsync -avz root@172.16.1.41:/tmp  ./
#拉取远程服务器目录下的文件,不包含目录本身
[root@web01 ~]# rsync -avz root@172.16.1.41:/tmp/  ./

 

#将本地文件推送到远程

[root@web01 ~]# rsync -avz file1 root@172.16.1.41:/root/

 

注意:普通方式使用root用户,每次推送,拉取需要输入root用户的密码,在企业中这种情况是不被允许的。如果使用普通用户又会出现权限不足的情况,针对此种情况守护进程模式诞生了。

 

守护进程模式:

.两台机器,一台作为服务端,另外一台作为客户端,我们只需要将rsync服务部署到服务端,在客户端无需做任何操作就能将文件推送到远程服务端,自然也可以从远程服务端拉取需要文件到本地客户端。

1.环境准备

 

2.服务端安装rsync

[root@backup ~]# yum install -y rsync

 

3.编辑rsync配置文件

[root@backup ~]# vim /etc/rsyncd.conf        

uid = rsync        #指定运行程序的用户


gid = rsync       #指定运行程序的用户


port = 873        #服务的监听端口


fake super = yes          #不需要root用户启动,安全机制


use chroot = no            #限制操作目录(出于安全考虑)


max connections = 200      #最大可连接数量(可调整)


timeout = 600         #超时时间(可调整)


ignore errors          #忽略错误


read only = false        #关闭只读权限


list = false              #查看模块列表


auth users = rsync_backup        #指定授权的虚拟用户


secrets file = /etc/rsync.passwd      #指定授权的虚拟用户的密码


log file = /var/log/rsyncd.log       #日志文件
#####################################


[backup]        #模块名称


comment = welcome to oldboyedu backup!       #注释


path = /backup    真实的文件目录

 

 4.服务端创建用户

[root@backup ~]# useradd  rsync -s  /sbin/nologin -M   

 

 

5.服务端创建密码文件

[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd   

 

6.密码文件授权

[root@backup ~]# chmod 600 /etc/rsync.passwd

 

7.服务端创建真实文件目录

[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R  rsync.rsync  /backup/    

#授权用户就是启动rsync服务的用户,参考配置文件

 

8.服务端启动服务

[root@backup ~]# systemctl  start  rsyncd   

[root@backup ~]# netstat -lntp   

 

 
 tcp         0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      18673/rsync 
 tcp6       0      0 :::873                          :::*                   LISTEN      18673/rsync  
 
 

服务端配置完成,注意事项总结:

1.创建rsync服务的启动用户
2.创建指定的密码文件,路径需是配置文件中的路径+授权600
3.创建真实目录,授权用户权限
4.服务启动后一定要验证是否启动成功
 
 

客户端验证:

[root@web01 ~]# rsync -avz 1.txt rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
1.txt
 
 

关于密码:

1.客户端根据提示手动输入密码

2.将密码写入文件保存,推送或拉取时使用--password-file参数指定密码文件路径即可

3.配置环境变量

[root@web01 ~]# export  RSYNC_PASSWORD=123456

 


*关于rsync报错原因解析*

1. [root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::backu ./

@ERROR: Unknown module 'backu'


*原因:模块名字出错,检查输入的模块名字与配置文件中的名字是否相同

 

2. [root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup

sending incremental file list
rsync: failed to write xattr user.rsync.%stat for "." (in backup): Permission denied (13)
rsync: failed to set times on "." (in backup): Operation not permitted (1)
./

sent 176 bytes received 205 bytes 762.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]


*原因:

1.检查firewalld,selinux是否关闭

2.权限不足,服务端创建的真实目录权限过高(root)

 

3.[root@web01 ~]# rsync -avz /tmp/ rsync_back@172.16.1.41::backup

@ERROR: auth failed on module backup

 

*原因:
1.虚拟用户错误,检查输入的用户名与配置文件中的用户名是否相同
2.虚拟用户的密码输入错误
3.密码文件权限不是600
4.服务端密码文件不存在

 

 

4. [root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::/backup

ERROR: The remote path must start with a module name not a /

 

*原因:守护进程模式中::后面跟的是模块名字,而不是目录名字

 

 5.[root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup

rsync: failed to connect to 172.16.1.41 (172.16.1.41): Connection refused (111)

rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2

*原因:服务端服务没有启动




 6.[root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup

@ERROR: chdir failed

*原因:服务端文件目录不存在

 

 

 

 

 

 

 

 

posted @ 2020-08-12 19:24  芒果~~  阅读(582)  评论(0编辑  收藏  举报