先放个链接,万一有人关注呢
↓ ↓ ↓ ↓ ↓
在计算机系统中,文件的完整性和一致性对于数据的可靠性和安全性至关重要。无论是在个人电脑上还是在企业服务器中,确保文件的正确性和准确性都是必不可少的。文件校验脚本是一种自动化工具,可以帮助我们检测文件的变化、比较不同主机上的文件差异,并提供快速而可靠的验证机制。
脚本示例
# 添加日志记录功能function record_log() {echo "-----------------------" > check.logecho "参数: $dir $host1 $host2" >> check.logecho "选项: $option" >> check.log}# 参数校验function check_params() {if [[ -z $1 ]] || [[ -z $2 ]] || [[ -z $3 ]]; thenecho "参数不完整,请提供完整的参数!"exit 1fi}# 获取目录列表function get_dir_list() {if ! ssh -q "$host1" "ls -l $dir" > dir1.list; thenecho "获取目录列表失败!"exit 1fiif ! ssh -q "$host2" "ls -l $dir" > dir2.list; thenecho "获取目录列表失败!"exit 1fi}# 同步目录function sync_dir() {if [[ $option = 2 ]]; thenssh "$host1" "rsync -avz \"$host2:$dir\" \"$dir\""elif [[ $option = 3 ]]; thenssh "$host2" "rsync -avz \"$host1:$dir\" \"$dir\""fi}# 获取命令行参数与选项dir=$1host1=$2host2=$3echo "请选择操作: 1.检查目录 2.同步主机1到主机2 3.同步主机2到主机1"read -p "操作选项: " option# 记录日志record_log# 参数校验check_params# 获取目录列表get_dir_list# 比较目录diff <(cat dir1.list) <(cat dir2.list)if [[ $? -eq 0 ]]; thenecho "目录一致!"elseecho "目录不一致!"# 获取当前时间作为备份时间time=$(date +%Y%m%d%H%M%S)# 备份需要改变的文件,文件名中包含备份时间changed_files=$(diff <(cat dir1.list) <(cat dir2.list))if [[ -n $changed_files ]]; thenrsync -avz "$host1:\"$dir/$changed_files\"" "$dir/.backup_$time/"fichanged_files=$(diff <(cat dir2.list) <(cat dir1.list))if [[ -n $changed_files ]]; thenrsync -avz "$host2:\"$dir/$changed_files\"" "$dir/.backup_$time/"fi# 同步目录sync_dirfi# 删除临时文件rm -f dir1.list dir2.list
结束!如有不足之处,欢迎指正!
我们的组织在这里:


原文作者:运维book思议;如有侵权,请联系管理员删除。