有以下三台服务器,用定时任务和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
五、添加定时任务,比如每分钟执行一次
![1621676623369721.png [_E(2N50S9LP)}]$Q8H0CRJ.png](/ueditor/php/upload/image/20210522/1621676623369721.png)
近期评论