乐于分享
好东西不私藏

一键检测!揭秘两台服务器文件一致性检查的神奇脚本

一键检测!揭秘两台服务器文件一致性检查的神奇脚本

在当今数据驱动的时代,服务器的文件一致性对于确保数据准确性和业务连续性至关重要。想象一下,如果你负责管理两台服务器,并且需要确保这两台服务器上某个目录中的文件完全一致,你会怎么做?手动检查?那将是一项既繁琐又容易出错的任务。幸运的是,我们有一个神奇的Bash脚本可以帮助我们自动化这个过程!

这个脚本的核心思想是比较两台服务器上指定目录下所有文件的MD5值,以检测它们的一致性。MD5值,全称是“Message-Digest Algorithm 5”,是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。简单来说,如果两个文件的MD5值相同,那么这两个文件的内容也几乎可以肯定是完全相同的。

现在,让我们深入探讨这个神奇的脚本是如何工作的。

#!/bin/bash  ######################################  # 检测两台服务器指定目录下的文件一致性  # 通过对比两台服务器上文件的md5值,检测文件的一致性  ##################################  dir=/data/web  b_ip=192.168.88.10  # 在本地服务器上,将指定目录下的所有文件遍历出来,  # 使用md5sum命令计算每个文件的MD5值,并将结果写入到/tmp/md5_a.txt文件中  find $dir -type f | xargs md5sum > /tmp/md5_a.txt  # 在远程服务器上执行相同的操作,将结果写入到远程服务器的/tmp/md5_b.txt文件中  # 然后将这个文件从远程服务器拷贝到本地服务器的/tmp目录下  ssh $b_ip "find $dir -type f | xargs md5sum > /tmp/md5_b.txt"  scp $b_ip:/tmp/md5_b.txt /tmp  # 接下来,脚本将遍历/tmp/md5_a.txt文件中的每个文件名  # 并与/tmp/md5_b.txt中的文件名和MD5值进行比较  for f in `awk '{print $2}' /tmp/md5_a.txt`  do      # 检查远程服务器上是否存在该文件      if grep -qw "$f" /tmp/md5_b.txt      then          # 如果文件存在,则获取两个服务器上该文件的MD5值并进行比较          md5_a=`grep -w "$f" /tmp/md5_a.txt | awk '{print $1}'`          md5_b=`grep -w "$f" /tmp/md5_b.txt | awk '{print $1}'`          # 如果MD5值不一致,则表示文件内容已被修改          if [ "$md5_a" != "$md5_b" ]          then              echo "$f changed."          fi      else          # 如果远程服务器上没有找到该文件,则表示文件已被删除          echo "$f deleted."      fi  done

脚本解析

  1. 设置目录和IP:脚本首先设置了要检查的目录dir和远程服务器的IP地址b_ip

  2. 生成MD5列表:接着,脚本在本地和远程服务器上分别执行findmd5sum命令,生成文件的MD5值列表,并保存到/tmp/md5_a.txt/tmp/md5_b.txt中。

  3. 比较MD5值:然后,脚本遍历本地服务器上的文件列表,对于每个文件,它都会检查该文件是否存在于远程服务器上。如果存在,脚本将比较两个服务器上该文件的MD5值。如果MD5值不同,则表示文件内容在两个服务器之间不一致。

  4. 输出结果:最后,脚本将输出所有已更改或已删除的文件。

使用与注意事项

  • 确保本地和远程服务器上都安装了md5sum命令。

  • 脚本中的SSH连接是基于密钥认证的,确保已经设置了免密码SSH登录。

  • 根据需要修改dirb_ip变量。

这个脚本不仅提高了文件一致性检查的效率,而且大大减少了人为错误的可能性。在分布式系统、数据备份或容灾场景中,这个脚本可以作为一个强大的工具来确保数据的完整性和一致性。现在,你可以放心地在多台服务器之间同步和共享重要数据了!

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 一键检测!揭秘两台服务器文件一致性检查的神奇脚本

评论 抢沙发

2 + 5 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮