rsync配置

2022-11-22 16:22:30 浏览数 (1)

服务端

安装

检查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,内容

代码语言:javascript复制
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的方式。

0 人点赞