有以下三台服务器,用定时任务和rsync服务让他们保持文件增量同步
w1:172.31.29.221 3.21.230.211
w2:172.31.28.61 18.219.170.61
w3:172.31.19.244 18.118.115.101
一、三台服务器都安装rsync服务
1.确认 rsync daemon 是否已安装:
sudo apt update
sudo apt install rsync
2.检查 rsync 配置文件:
检查是否已经配置了 rsync 守护进程的配置文件,一般位于 /etc/rsyncd.conf。
如果没有此文件或未正确配置,请根据需要创建并配置它:
# sample rsyncd.conf configuration file
# GLOBAL OPTIONS
#motd file=/etc/motd
#log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# The init.d script does its own pid file handling,
# so omit the "pid file" line completely in that case.
# pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=
# MODULE OPTIONS
address = 172.31.29.221
port = 873
uid = root
gid = root
use chroot = yes
max connections=10
timeout = 600
# motd file=/etc/rsyncd/rsyncd.motd
pid file=/var/run/rsyncd.pid
lock file = /var/lock/rsyncd
log file=/var/log/rsync.log
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
[ftp]
comment = public archive
# 需要同步的目录
path = /www/wwwroot/dirtest
lock file = /var/lock/rsyncd
# the default for read only is yes...
read only = no
list = yes
auth users = root
secrets file = /etc/rsyncd/rsyncd.secrets
strict modes = yes
hosts allow = 172.31.19.244 172.31.28.61 172.31.29.221
# hosts deny =
ignore errors = no
ignore nonreadable = yes
transfer logging = no
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600
refuse options = checksum dry-run
3.创建 systemd service 文件:
如果系统没有提供预定义的 rsyncd.service 文件,则需要手动创建。
你可以参照其他系统的模板或者官方文档来编写一个符合 systemd 规范的服务文件。
例如,创建 /etc/systemd/system/rsyncd.service 文件,内容可能如下:
[Unit]
Description=Rsync Daemon
After=network.target
[Service]
ExecStart=/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
User=root
Group=root
PIDFile=/var/run/rsyncd.pid
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target
4.重新加载 systemd manager configuration:
创建好服务文件后,执行以下命令使新添加的服务生效:
sudo systemctl daemon-reload
5.启动和启用 rsyncd 服务:
现在应该能够启用和启动 rsyncd 服务了
sudo systemctl start rsyncd
sudo systemctl enable rsyncd
6.检查 rsyncd 服务是否成功启动
并查看任何可能的日志消息以排查潜在问题
sudo systemctl status rsyncd
二、三台机器上都新建用户组和用户:
addgroup myrsync
useradd -g myrsync -s /sbin/nologin -d /home/w1 w1
passwd w1
useradd -g myrsync -s /sbin/nologin -d /home/w2 w2
passwd w2
useradd -g myrsync -s /sbin/nologin -d /home/w3 w3
passwd w3
三、三台机器都新建一个md5加密了密码“Server123”的文件
vim w.secrets
写入“79f91f8f6fa88c707476af776ff383bd”保存
四、在其中的两台主机上编写同步文件的shell:
1.host 172.31.29.221 上的shell:
#!/bin/bash
HOST1="172.31.29.221"
USER1="w1"
PASSWORD1="Server123"
HOST2="172.31.28.61"
USER2="w2"
PASSWORD2="Server123"
HOST3="172.31.19.244"
USER3="w3"
PASSWORD3="Server123"
RSYNC_OPTS="--password-file=/etc/rsyncd/w.secrets"
# 文件夹名称
SOURCE_DIR="/www/wwwroot/www.abc.com/public/uploads/store/comment/"
DES_DIR="$USER1@$HOST3::ftp"
echo $DES_DIR
rsync $RSYNC_OPTS -avz "$DES_DIR" "$SOURCE_DIR"
rsync $RSYNC_OPTS -avz "$SOURCE_DIR" "$DES_DIR"
# 可选:记录日志
echo "$(date): Sync completed." >> /var/log/sync_to_host2.log
2.host 172.31.28.61 上的shell:
#!/bin/bash
HOST1="172.31.29.221"
USER1="w1"
PASSWORD1="Server123"
HOST2="172.31.28.61"
USER2="w2"
PASSWORD2="Server123"
HOST3="172.31.19.244"
USER3="w3"
PASSWORD3="Server123"
RSYNC_OPTS="--password-file=/etc/rsyncd/w.secrets"
# 文件夹名称
SOURCE_DIR="/www/wwwroot/ydev2.302010.com/public/uploads/store/comment/"
DES_DIR="$USER1@$HOST3::ftp"
echo $DES_DIR
rsync $RSYNC_OPTS -avz "$DES_DIR" "$SOURCE_DIR"
rsync $RSYNC_OPTS -avz "$SOURCE_DIR" "$DES_DIR"
# 可选:记录日志
echo "$(date): Sync completed." >> /var/log/sync_to_host2.log
五、添加定时任务,比如每分钟执行一次
近期评论