参考:https://www.cnblogs.com/zhenhui/p/5715840.html
https://wangdoc.com/ssh/rsync.html
https://blog.51cto.com/net881004/2346925?source=dra

环境:
服务端:192.168.1.101
客户端:192.168.1.102

目标:
将客户端 /root/client 这个文件夹与服务端 /root/server 文件夹进行增量备份

服务端

安装 rsync

yum -y install rsync

创建一个连接 rsync 时的用户名和密码

vim /etc/rsyncd.secrets

格式:用户名:密码

192_168_0_102:123456

为了密码的安全性,我们必须把权限设为600

chmod 600 /etc/rsyncd.secrets

配置 rsync 服务

# 指定该模块以指定的 UID 传输文件
uid = root                         

# 指定该模块以指定的 GID 传输文件
gid = root                                  

use chroot = no    

# 允许客户上传文件
read only = false

# 是否允许客户端列出可以使用的模块列表
list = no

# 指定 rsync 守护进程监听的端口号
port = 873

# 设置允许连接的ip为客户端的ip
hosts allow=192.168.0.102

# 禁止其它ip连接
hosts deny=*    

# 设置最大连接数                            
max connections = 5                      

pid file = /var/run/rsyncd.pid 
           
# 客户端连接到服务端时看到的欢迎信息文件
motd file = /etc/rsyncd.motd    

# rsync 用户密码存放位置
secrets file = /etc/rsyncd.secrets             

log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3

# 超时时间
timeout = 300

# 传输时不压缩的文件格式
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.7z

# 模块名称
[backup]   
# 服务端存储接收到的文件的位置                            
path = /root/server      
# 忽略错误                           
ignore errors                              
# 具有权限的用户(用户名来自 /etc/rsyncd.secrets )
auth users = 192_168_0_102    

设置 rsync 开机启动

systemctl enable rsyncd

启动 rsync

systemctl start rsyncd

客户端

安装 rsync

yum -y install rsync

设置 rsync 开机启动

systemctl enable rsyncd

启动 rsync

systemctl start rsyncd

创建一个文件用来保存连接 rsync 时的密码
我们在服务端文件 /etc/rsyncd.secrets 里设置过密码为123456,所以直接填入

echo 123456 >> /etc/rsyncd.passwd

为了密码的安全性,我们必须把权限设为600

chmod 600 /etc/rsyncd.passwd

编写备份脚本

vim ~/backup.sh
#!/bin/sh
rsync -avh \
    --delete \
    --exclude='lost+found' \
    /root/client/ \
    192_168_0_102@192.168.0.101::backup \
    --password-file='/etc/rsyncd.passwd'
  • -a 表示存档模式,保存所有的元数据,比如修改时间(modification time)、权限、所有者等,并且软链接也会同步过去。
  • -v 表示输出细节。-vv表示输出更详细的信息,-vvv表示输出最详细的信息
  • --delete 删除只存在于目标目录、不存在于源目标的文件,即保证目标目录是源目标的镜像
  • --exclude 指定排除不进行同步的文件或文件夹
  • /root/client/ 需要备份的客户端文件夹路径
  • 192_168_0_102@192.168.0.101::backup 格式为:服务端配置里的 auth users @ 服务端ip:服务端配置里的模块名称
  • --password-file 登录用户密码所在的文件
这时候同步可能会因为服务端的 SELinux 导致权限的问题而无法同步,关闭 SELinux 即可:
setenforce 0
sed -i s/"SELINUX=enforcing"/"SELINUX=disabled"/g /etc/selinux/config
×