我有2台服务器serv1和serv2,需要比较这2台服务器中的图像,以检测哪些文件丢失或被修改过。
到目前为止,我有3个选项:
- 使用PHP创建API
缺点: - 花费大量时间(提取,解码,合并,循环,比较......)
- 使用rsync
- 也许我可以使用一些图书馆或供应商,但我怀疑我的客户会允许我。如果它可以是shell脚本或php内置函数,我会尽可能地执行它。
所以我的问题是,是否有其他方法可以获取这些图像的图像和修改日期而无需身份验证?我的第一个解决方案是好的,如果它可以被优化导致如果数组太大,则需要花费很多时间。
我希望解决方案可以用PHP或Shell脚本完成。
请帮助给我更多选择。感谢
答案 0 :(得分:0)
在两台服务器上安装实用程序md5deep
(或sha1deep
)。
在第一台服务器上执行md5deep
并将结果保存到文本文件:
user@server1> md5deep -l -r mydir > server1.txt
结果文件如下所示:
e7c3fcf5ad7583012379ec49e9a47b28 .\a\file1.php
2ef76c2ecaefba21b395c6b0c6af7314 .\b\file2.txt
45e19bb4b38d529d6310946966f4df12 .\c\file3.bin
...
然后,将文件server1.txt
复制到第二台服务器并以负匹配模式运行md5deep
:
md5deep -l -r -X server1.txt mydir
这将打印第二台服务器上与第一台服务器不同的所有文件的校验和和名称。
或者,您可以使用diff或类似实用程序自己比较md5deep -l -r dir
创建的文本文件。
最后一点 - 在每台服务器上简单地在cron中运行md5deep -l -r mydir | gzip > md5deep.txt.gz
可能更容易,这样您就可以将文件列表与每台服务器上的校验和进行比较(gzip,以便快速获取)。