rsync远程数据同步工具的使用
准备工作
虚拟机1: 192.168.24.41, 用于搭建rsync服务器
虚拟机2: 192.168.26.68, 用于搭建rsync客户端
虚拟机1和虚拟机2均为centos7;
1. 检查虚拟机1/2是否安装rsync,没有则安装
rsync //-bash: rsync: 未找到命令
yum search rsync
sudo yum install rsync.x86_64 -y
rsync // 出现rsync的相关命令提示
2. rsync服务器
2.1 创建rsync文件夹,配置文件和用户密码map文件,
注:服务端和客户端的rsyncd.secrets
均要求权限为600;
sudo mkdir /etc/rsyncd
sudo touch /etc/rsyncd/rsyncd.conf
sudo touch /etc/rsyncd/rsyncd.secrets
sudo touch /etc/rsyncd/rsyncd.motd
sudo chmod 600 /etc/rsyncd/rsyncd.secrets
// 删除rsyn默认配置文件,添加软链
sudo rm -rf /etc/rsyncd.conf
sudo ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
2.2 修改sudo vim /etc/rsyncd/rsyncd.secrets
,增加允许访问的用户和密码
tt:1234
2.3 修改sudo vim /etc/rsyncd/rsyncd.conf
uid = root
gid = root
pid file = /var/run/rsyncd.pid
port = 873
log file = /var/log/rsync.log
secrets file = /etc/rsyncd/rsyncd.secrets
[www]
comment = backup web
path=/home/work
read only = no
auth users=tt
- port: 873, rsync默认端口873;
- log file: 日志文件的路径
- secrets file 允许用户和密码的map表的位置
- [www] module名称,相当于变量,代表了其下所属
- path: 同步工具服务端的目标目录
- read only : yes 表示只允许客户端从服务端读取,不允许客户端推送到服务端,而no则表示可以推送和拉取;
- auth: [www]下允许使用的用户
2.5. 创建 [www]下的目录
sudo mkdir /home/work -p
2.6 启动rsync 服务器
// 启动rsync服务器
sudo rsync --daemon --config=/etc/rsyncd.conf
// 查看rsync是否启动,
ps -ef | grep rsync
3. rsync客户端
3.1. 检查是否按照rsync,没有则安装rsync;
3.2. 新建本地目录,在其中建立目录 t
mkdir /home/work/test/t -p
3.3 将rsyncd用户的密码写入到rsyncd.secret
,并修改rsyncd.secret
的权限为600
touch /home/work/test/rsyncd.secret // 填写内容为1234
chmod 600 rsyncd.conf // 修改权限为600
3.4 在目录t下新建文件a.txt
touch /home/work/test/t/a.txt
3.5 往服务器推送文件
rsync -avz t/ tt@192.168.24.41::www --password-file=/home/work/test/rsyncd.secret
- tt :【www】允许的用户;
- 192.168.24.41: rsync服务器
- www: module
- /home/work/test/rsyncd.secret为tt用户的密码,与t/同级
4. 问题
备注: 遇到问题多去看服务器的 /var/log//var/log/rsync.log
;日志文件的位置
4.1. 问题1:failed to create pid file /var/run/rsyncd.pid: File exists
执行命令
sudo rm -rf /var/run/rsyncd.pid
,然后重新启动
4.2. auth failed on module www
客户端用户名没有通过module www的校验,可能是密码不匹配或者用户名不匹配;
4.3 rsync: connection unexpectedly closed
我是由于客户端创建文件使用sudo造成的,使用当前用户建立/test,/test/rsyncd.secret,/test/t三个文件路径即可。