服务端
安装
检查rsync 是否已经安装
代码语言:javascript复制rpm -qa|grep rsync
若已经安装,则使用rpm -e
命令卸载。
安装rsync
代码语言:javascript复制yum install rsync
配置
rsync主要分为三个配置文件,分别是:
- rsyncd.conf – 主配置文件
- rsyncd.secrets – 密码文件
- rsyncd.motd – 服务器信息文件
rsyncd.conf
配置文件
代码语言:javascript复制vi /etc/rsyncd.conf
配置如下
代码语言:javascript复制# GLOBAL OPTIONS
uid = root
gid = root
use chroot = no
read only = no
#limit access to private LANs
hosts allow=*
max connections = 5
pid file = /var/run/rsyncd.pid
secrets file = /etc/rsyncd.secrets
motd file = /etc/rsyncd.motd
#This will give you a separate log file
log file = /var/log/rsync.log
#This will log every file transferred - up to 85,000 per user, per sync
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
# MODULE OPTIONS
[zjhome]
path = /root/
list=yes
ignore errors
auth users = zj
comment = root_home
exclude = important/
[myblog]
path = /data/myblog/
list=no
ignore errors
auth users = zj
comment = tmp_china
注:
auth users = zj
这是虚拟用户 系统上不需要添加。
rsyncd.secrets
用户密码配置文件
代码语言:javascript复制vi /etc/rsyncd.secrets
内容
代码语言:javascript复制zj:123456
为了密码的安全性,我们必须把权限设为600
代码语言:javascript复制chown root:root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
rsyncd.motd
建立连接到服务器的客户端看到的欢迎信息
代码语言:javascript复制vi /etc/rsyncd.motd
防火墙设置
如果服务器上装有防火墙,需在服务器中设置iptables将837端口开放。
代码语言:javascript复制iptables -A INPUT -p tcp --dport 873 -j ACCEPT
启动rsync
启动rsync服务端(独立启动)
代码语言:javascript复制rsync --daemon --config=/etc/rsyncd.conf
默认路径就是etc/rsyncd.conf
所以配置路径可以省略
代码语言:javascript复制rsync --daemon
查看873端口是否起来
代码语言:javascript复制netstat -an | grep 873
# 或者
netstat -a | grep rsync
如果rsync启动成功的话可以看到873端口已经在监听了。
设置开机启动 rsync服务:
代码语言:javascript复制echo "rsync --daemon" >> /etc/rc.local
停止
代码语言:javascript复制lsof -i:873
kill pid
客户端
下载
Windows客户端
链接:https://pan.baidu.com/s/1RbPZ6RntpzF3dJ5HLKkRUQ 提取码:psvm
设置环境变量
代码语言:javascript复制D:Program Files (x86)cwRsyncbin
同步方向
Windows下使用cwRsync
的时候所有路径前面要添加上/cygdrive
。
Server => Local
代码语言:javascript复制/usr/bin/rsync -vzrtopg --progress --password-file=/cygdrive/d/auth.txt --delete zj@192.168.7.101::zjhome /cygdrive/d/Pic/
Local => Server
代码语言:javascript复制/usr/bin/rsync -vzrtopg --progress --password-file=/cygdrive/d/auth.txt /cygdrive/d/Pic/ zj@192.168.7.101::zjhome
增量同步
代码语言:javascript复制rsync -avzP /cygdrive/d/Pic/ zj@192.168.160.101::zjhome
配置本地密码文件
在D盘根目录添加文件auth.txt
,内容
123456
同步
代码语言:javascript复制rsync -avzP --password-file=/cygdrive/d/auth.txt /cygdrive/d/Pic/ zj@192.168.160.101::zjhome
镜像同步
代码语言:javascript复制rsync -avzP --delete zj@192.167.7.101::zjhome /tmp/david/
我们引入一个 --delete
选项,表示服务器上的数据要与客户端完全一致,如果 /tmp/david/目录中有服务器上不存在的文件,则删除。
最终目的是让/tmp/david/目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除;
问题排查
代码语言:javascript复制tail /var/log/rsync.log
参数
代码语言:javascript复制-a 参数,相当于-rlptgoD,
-r 是递归 -l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;
-t 保持文件原有时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系
定时同步
编辑crontab
代码语言:javascript复制crontab -e
加入如下代码:
代码语言:javascript复制10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password zj@192.168.7.101::zjhome /cygdrive/d/Pic/
问题
问题1
Could not create directory ‘/home/Administrator/.ssh’
添加环境变量
代码语言:javascript复制HOME=C:UsersAdministrator
问题2
uid 4294967295 (-1) is impossible to set on
这是Windows和Linux文件所属用户不一致导致的,目前还没有解决方法,也就是说
目前还没用通过SSH认证来使用Rsync的方式。