写一个shell脚本将A服务器的文件同步到B服务器并自动检查两端的同步状态如果有文件没有同步则触发邮件通知
#!/bin/bash
请替换以下变量为实际值
A_SERVER="A服务器IP地址" A_USER="A服务器用户名" A_DIR="/path/to/sync" # A服务器需要同步的目录
B_SERVER="B服务器IP地址" B_USER="B服务器用户名" B_DIR="/path/to/sync" # B服务器需要同步的目录
EMAIL="收件人邮箱" SUBJECT="同步状态异常"
同步函数
sync_files() { rsync -avz --delete --exclude=".git" -e "ssh -o StrictHostKeyChecking=no" ${A_USER}@${A_SERVER}:${A_DIR} ${B_USER}@${B_SERVER}:${B_DIR} }
检查同步状态函数
check_sync() { diff <(ssh ${A_USER}@${A_SERVER} "cd ${A_DIR} && find . -type f -printf '%P\n' | sort") <(ssh ${B_USER}@${B_SERVER} "cd ${B_DIR} && find . -type f -printf '%P\n' | sort") }
发送邮件函数
send_email() { echo "同步状态异常,请检查!" | mail -s ${SUBJECT} ${EMAIL} }
执行同步
sync_files
检查同步状态
if check_sync; then echo "同步状态正常!" else echo "同步状态异常!" send_email fi
exit
原文地址: https://www.cveoy.top/t/topic/cZAF 著作权归作者所有。请勿转载和采集!