rsync 跨服务文件同步

rsync

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
已支持跨平台,可以在Windows与Linux间进行数据同步。

目标

  1. 通过 rsync 实现免密同步到多台服务器
  2. 多目录与多台服务器同步时,使用脚本自动化执行
  3. 支持定时执行/手动执行
  4. 支持服务器之间角色互换。即可以是服务器,也可以是客户端
IP角色
172.16.10.2服务器
172.16.10.3客户端
172.16.10.4客户端

需要同步的文件夹
/home/projects/bbs9 /home/projects/yjh9
需要排除的文件
bbs9/webapps/ROOT/WEB-INF/proxool.xml yjh9/webapps/ROOT/WEB-INF/proxool.xml

安装

在每一台服务器上执行

# 安装rsync
yum -y install rsync
# 防火墙规则配置
firewall-cmd --zone=public --add-port=873/tcp --permanent
# or
iptables  -I  INPUT  -p  tcp  --dport  873  -j  ACCEPT

配置

在每一台服务器上执行

# 创建rsync相关文件存放目录
mkdir -p /home/rsync
# 创建日志输出目录
mkdir -p /home/rsync/log
# 创建用户与密码
echo  "rsync:qwer@123321"  >  /home/rsync/rsyncd.secrets
# 创建排除的文件
echo "webapps/ROOT/WEB-INF/proxool.xml" > /home/rsync/rsync-exclude.list
echo "A.txt" > /home/rsync/rsync-test-exclude.list
# 创建密码文件
echo  "qwer@123321"  >  /home/rsync/passwd
# 权限
chmod 600 /home/rsync/rsyncd.secrets /home/rsync/rsync-exclude.list /home/rsync/passwd /home/rsync/rsync-test-exclude.list
# 修改配置
vi /etc/rsyncd.conf

rsyncd.conf

# 全局配置
motd file = /home/rsync/rsyncd.motd
log file = /home/rsync/log/rsyncd.log
transfer logging = yes
port = 873
# 当前服务器IP
address = 172.16.10.2
uid = root
gid = root
use chroot = no
read only = no
max connections = 10
secrets file = /home/rsync/rsyncd.secrets
hosts allow = 172.16.10.4 172.16.10.3 172.16.10.2
hosts deny = *
auth users = rsync
ignore errors
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
list = false
# 模块配置
[test]
	comment = rsync test
	path = /home/projects/test/
	exclude from = /home/rsync/rsync-test-exclude.list
[bbs9]
	comment = rsync bbs9
	path = /home/projects/bbs9/
	exclude from = /home/rsync/rsync-exclude.list
[yjh9]
	comment = rsync yjh9
	path = /home/projects/yjh9/
	exclude from = /home/rsync/rsync-exclude.list

启动

# 启动
rsync --daemon
# 开机启动
echo "rsync  --daemon"  >>  /etc/rc.local
# 查看是否启动成功
ps -aux | grep rsync
# 没有进程 查看日志排查问题
cat /home/rsync/log/rsyncd.log

# 推送
rsync -avz --progress --delete /home/projects/test/ rsync@172.16.10.3::test --password-file=/home/rsync/passwd

# 拉取
rsync  -avz --progress --delete rsync@172.16.10.2::test /home/projects/test/ --password-file=/home/rsync/passwd

# 后台执行
nohup rsync -avz --progress --delete /home/projects/bbs9/ rsync@172.16.10.3::bbs9 --password-file=/home/rsync/passwd > /home/rsync/log/rsync_bbs9.log 2>&1 &

脚本

# 创建自动化脚本
vi /root/batch_upgrade_bbs9.sh

batch_upgrade_bbs9.sh

#!/bin/bash
hosts=(172.16.10.3 172.16.10.4)
for host in ${hosts[@]}
do
        echo "rsync -avz --progress --delete /home/projects/bbs9/ rsync@$host::bbs9 --password-file=/home/rsync/passwd > /home/rsync/log/bbs9_${host}_rsync.log"
        rsync -avz --progress --delete /home/projects/bbs9/ rsync@$host::bbs9 --password-file=/home/rsync/passwd > /home/rsync/log/bbs9_${host}_rsync.log
done

在 172.16.10.2 上执行同步脚本,将172.16.10.2 的 bbs9 yjh9 分发到 172.16.10.3 & 172.16.10.4

sh /root/rsync_all_projects.sh

标题:rsync 跨服务文件同步
作者:DengXiangHong
地址:https://www.int1024.cn/articles/2022/08/05/1659690509344.html

    评论
    0 评论
avatar

取消