自己建商城型网站,网络服务器的功能是,js网页特效,江西雄基建设网站OCC服务器到BCC服务器文件正向同步
需求#xff1a;编写shell脚本#xff0c;使用rsync命令来同步目录#xff0c;把全部需要同步的目录放在配置文件中#xff0c;设置定时任务自动同步
服务器IP#xff1a;
服务器类型IP地址OCC服务器192.168.1.188BCC服务器192.168.1…OCC服务器到BCC服务器文件正向同步
需求编写shell脚本使用rsync命令来同步目录把全部需要同步的目录放在配置文件中设置定时任务自动同步
服务器IP
服务器类型IP地址OCC服务器192.168.1.188BCC服务器192.168.1.88
第一步配置SSH免密登录 生成SSH密钥如果尚未生成 在192.168.1.88上执行 ssh-keygen -t rsa按提示操作不要输入密码这样就会在~/.ssh/id_rsa.pub生成公钥。 复制公钥到192.168.1.188 在192.168.1.88上执行 ssh-copy-id -i ~/.ssh/id_rsa.pub mml3192.168.1.188输入密码XXXXXX完成后应能免密码登录到192.168.1.188 反向操作 同样的步骤也需要在192.168.1.188上执行复制其公钥到192.168.1.88上。 ssh-copy-id -i ~/.ssh/id_rsa.pub mml3192.168.1.88第二步编写Shell脚本
在BCC服务器1.88上新建一个脚本sync_dirs.sh将使用rsync命令从1.188上同步指定的目录到1.88的本地目录。请确保两台服务器上都安装了rsync。将需要同步的文件夹全部填写到配置文件/home/mml3/sync_dirs.conf中。
#!/bin/bash# 定义源服务器的地址
SOURCE_SERVERmml3192.168.1.188# 配置文件路径
CONF_FILE/home/mml3/sync_dirs.conf# 日志文件路径
LOG_FILE/home/mml3/app/sync_dirs.log# 检查配置文件是否存在
if [ ! -f $CONF_FILE ]; thenecho 配置文件不存在: $CONF_FILE | tee -a $LOG_FILEexit 1
fi# 读取配置文件并同步每个目录
while IFS read -r dir; do# 跳过空行if [ -z $dir ]; thencontinuefi# 如果目录不存在则创建if [ ! -d $dir ]; thenecho 目录不存在正在创建: $dir | tee -a $LOG_FILEmkdir -p $dirfi# 开始同步echo 开始同步目录: $dir - $(date) | tee -a $LOG_FILErsync -avz --delete $SOURCE_SERVER:$dir/ $dir $LOG_FILE 21echo 完成同步目录: $dir - $(date) | tee -a $LOG_FILE
done $CONF_FILE第三步设置定时任务 保存脚本将上述脚本保存为sync_dirs.sh并赋予执行权限 chmod x sync_dirs.sh首次需要手动执行执行完以后配置定时任务 ./sync_dirs.sh编辑Crontab 使用crontab -e命令编辑定时任务使其同时记录标准输出和错误输出。 */5 * * * * /home/mml3/sync_dirs.sh /tmp/cron.log 21这会将脚本执行的所有输出包括错误重定向到指定的cron.log日志文件中。可以在/home/mml3/app/sync_dirs.log和/tmp/cron.log中查看同步操作和定时任务的详细日志。目前上面这个脚本是单向的文件只从188的目录同步到88。 如果188出问题了那么我们就需要把88上面的文件同步到188上面 以下是执行的步骤 OCC服务器到BCC服务器文件反向同步
第一步修改脚本以反转同步方向
在上面现有脚本中只需将rsync命令的源和目标地址调换即可然后在1.188上新建脚本并执行。
并且需要把同步的文件夹全部填写到配置文件/home/mml3/sync_dirs.conf中。
#!/bin/bash# 定义源服务器的地址
SOURCE_SERVERmml3192.168.1.88# 配置文件路径
CONF_FILE/home/mml3/sync_dirs.conf# 日志文件路径
LOG_FILE/home/mml3/app/sync_dirs.log# 检查配置文件是否存在
if [ ! -f $CONF_FILE ]; thenecho 配置文件不存在: $CONF_FILE | tee -a $LOG_FILEexit 1
fi# 读取配置文件并同步每个目录
while IFS read -r dir; do# 跳过空行if [ -z $dir ]; thencontinuefi# 如果目录不存在则创建if [ ! -d $dir ]; thenecho 目录不存在正在创建: $dir | tee -a $LOG_FILEmkdir -p $dirfi# 开始同步echo 开始同步目录: $dir - $(date) | tee -a $LOG_FILErsync -avz --delete $SOURCE_SERVER:$dir/ $dir $LOG_FILE 21echo 完成同步目录: $dir - $(date) | tee -a $LOG_FILE
done $CONF_FILE第二步设置定时任务 保存脚本将上述脚本保存为sync_dirs.sh并赋予执行权限 chmod x sync_dirs.sh首次需要手动执行执行完以后配置定时任务 ./sync_dirs.sh编辑Crontab 使用crontab -e命令编辑定时任务使其同时记录标准输出和错误输出。 */5 * * * * /path/to/sync_dirs.sh /tmp/cron.log 21