参考: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