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用户的密码,在企业中这种情况是不被允许的。如果使用普通用户又会出现权限不足的情况,针对此种情况守护进程模式诞生了。
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 真实的文件目录
[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服务的用户,参考配置文件
[root@backup ~]# netstat -lntp
服务端配置完成,注意事项总结:
客户端验证:
[root@web01 ~]# rsync -avz 1.txt rsync_backup@172.16.1.41::backupPassword:
sending incremental file list
1.txt
关于密码:
1.客户端根据提示手动输入密码
2.将密码写入文件保存,推送或拉取时使用--password-file参数指定密码文件路径即可
3.配置环境变量
[root@web01 ~]# export RSYNC_PASSWORD=123456
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.服务端密码文件不存在
[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
*原因:服务端文件目录不存在