目录
一、rsync服务端
1、下载rsync
# 下载 CentOS7 通用源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
yum install -y rsync
2、配置rsync服务端配置文件
cat > /etc/rsyncd.conf << EOF
################################################################
## 复制粘贴即可,然后请将修改自定义位置的内容: path
## 请修改 path 为你的实际目录,其他内容可视情况修改
################################################################
# 日志文件位置,启动rsync后自动产生这个文件,无需提前创建
log file = /var/log/rsyncd.log
# pid文件的存放位置
pidfile = /var/run/rsyncd.pid
# 支持max connections参数的锁文件
lock file = /var/run/rsync.lock
# 用户认证配置文件,里面保存用户名称和密码,必须手动创建这个文件
secrets file = /etc/rsync.pass
# 执行以下命令即可完成用户认证配置文件设置,具体的用户和密码,请自行修改
# echo "admin:123456" > /etc/rsync.pass && chmod 600 /etc/rsync.pass
# 自定义同步名称(自定义模块名)
[backup]
# rsync服务端数据存放路径,客户端的数据将同步至此目录,请跟你的实际修改该目录
path = /tmp/
comment = sync files
# 设置rsync运行权限为root
uid = root
# 设置rsync运行权限为root
gid = root
# 默认端口 , 客户端需要访问该端口,请记得开通防火墙策略或者直接关闭防火墙:systemctl stop firewalld
port = 873
# 表示出现错误忽略错误
ignore errors
# 默认为true,修改为no,增加对目录文件软连接的备份
use chroot = no
# 设置rsync服务端为读写权限
read only = no
# 不显示rsync服务端资源列表
list = no
# 最大连接数
max connections = 200
# 设置超时时间
timeout = 600
# 执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开
auth users = admin
# 允许进行数据同步的客户端IP地址,可以设置多个用英文状态下逗号隔开
# hosts allow = 192.168.51.133
# 禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
# hosts deny = 192.168.1.1
EOF
## 设置 rsync服务的账号和密码,务必将密码文件设置为 600 权限
echo "admin:123456" > /etc/rsync.pass && chmod 600 /etc/rsync.pass
## 设置开机自启
systemctl enable rsyncd && systemctl restart rsyncd
二、rsync客户端
rsync客户端不需要启动rsyncd服务,仅仅安装rsync,能执行rsync命令即可。要实现rsync实时同步,还需要一个关键性的软件:inotify-tools
1、下载 rsync 和 inotify-tools 软件
# 下载 CentOS7 通用源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
# 下载 epel-7.repo 源,可以提供 inotify-tools 软件下载
# epel(RHEL7系列)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum install -y inotify-tools rsync
2、编写rsync实时同步脚本
cat > /etc/inotify.sh << EOF
#!/bin/bash
# This Rsync script based on inotify.
# Date:2023-4-6
# Version:1.0
# inotify.sh
#####################################################################
## 复制粘贴,然后需要修改的内容分别是: SRC 和 server
## 其他内容可以修改也可自行按照各自情况修改
#####################################################################
# 写您需要备份的目录
SRC=/etc/
# 此处写的是rsync服务端自定义的同步名称(自定义模块名)
DEST1=backup
# 请更改server为你的 rsync 服务地址
server=192.168.51.140
User=admin
# echo "123456" > /etc/rsync.pass && chmod 600 /etc/rsync.pass
Passfile=/etc/rsync.pass
[ ! -e \$Passfile ] && exit 2
#Wait for change
inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' \
--event modify,create,move,delete,attrib \${SRC} | while read files
do
/usr/bin/rsync -avzP --delete --timeout=100 --password-file=\$Passfile \$SRC \
\${User}@\${server}::\$DEST1
echo "\${files} was rsynced" >> /var/log/rsync.log 2>&1
done &
EOF
## 执行 inotify.sh 脚本
sh /etc/inotify.sh
## 设置开机自启
chmod a+x /etc/rc.d/rc.local
echo "nohup /etc/inotify.sh &" >> /etc/rc.d/rc.local