实现rsync文件同步,且不需要手工输入密码,思路如下
测试环境:
服务端:Centos7
客户端:MacOS 10.15.7
1、配置服务器端需要将rsync程序以 daemon 模式运行
1,编辑同步配置文件
vim /etc/rsyncd.conf
写入以下内容:
uid = root
gid = root
port = 873
read only = no
# 允许访问的客户端ip,多个用逗号分隔
hosts allow = 222.128.9.86
# 运行同步的模块,可配置多个
[epwxWork]
comment = this is module for backup
path = /usr/local/src/
auth users = root
secrets file = /etc/rsyncd.pass
2,创建密码文件
vim /etc/rsyncd.pass
写入以下内容(格式为用户名:密码,用户名与模块的auth users相同):
root:eplugger123
设置密码文件权限(必须做)
chmod 600 /etc/rsyncd.pass
3,查看当前rsync进程,杀掉并重启启动。
ps -ef|grep rsync |grep -v grep
kill 进程号
rsync --daemon
#再次查看是否已运行
ps -ef|grep rsync |grep -v grep
4,添加防火墙服务端口
firewall-cmd --permanent --zone=public --add-service=rsyncd
systemctl restart firewalld.service
# 确认已启用
firewall-cmd --list-all
2、客户机
1,创建密码文件rsyncd.pass(为了免手工输入密码)
/路径/rsyncd.pass
写入密码(无用户名),密码与服务端配置相同
设置密码文件权限(必须做)
chmod 600 /路径/rsyncd.pass
2,执行同步
# 其中 epwxWork 为模块名
# 其中 root 与服务端的用户名配置相同
rsync -rltzuq --delete --exclude='.*' 本地路径 root@服务端ip::epwxWork --password-file=/路径/rsyncd.pass
如果没有很多模块,也可设置全局rsync密码,这样就不需要创建密码文件了,也不需要--password-file参数了:
export RSYNC_PASSWORD=密码
取消环境变量:
unset RSYNC_PASSWORD