gpt4 book ai didi

php - 两台服务器之间的差异图像

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:03 25 4
gpt4 key购买 nike

我有 2 个服务器 serv1 和 serv2,需要比较这 2 个服务器中的图像以检测哪些文件丢失或已被修改。

到目前为止我有 3 个选择:

- 使用 PHP 创建 API

  • 我创建了一个 API 文件,它将返回 serv1/www/app/images/中的所有图像
  • 获取每张图片的修改时间
  • 以 json 形式返回结果
  • 输出如下:{ 'path/to/file' : 123232433422 }
  • 我在 serv2 中获取它,解码然后将数组合并到 serv2/www/app/images 中的图像
  • 获取 array_diff,工作正常

缺点:- 需要大量时间(获取、解码、合并、循环、比较...)

- 使用 rsync

  • 试运行以获取 serv1 中存在但在 serv2 中丢失或修改的图像列表(非常快:))

缺点:

  • apache 无法运行 ssh,因为它无权访问 ~/.ssh/
  • 需要授予 apache 权限,但我的客户不需要它
  • 简而言之,我不能使用任何需要许可的东西

-也许我可以使用一些库或供应商,但我怀疑我的客户是否会允许我。如果可以是shell脚本或者php内置函数,只要有可能我都会做。

所以我的问题是是否有另一种方法可以在不需要身份验证的情况下获取图像和这些图像的修改日期?我的第一个解决方案如果可以优化的话还可以,因为如果数组太大,会花费很多时间。

我希望解决方案可以用 PHP 或 Shell 脚本来完成。

请帮助给我更多选择。谢谢

最佳答案

安装实用程序 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

这将打印第二个服务器上与第一个服务器不同的所有文件的校验和和名称。

或者,您可以比较 md5deep -l -r dir 创建的文本文件您自己使用 diff 或类似的实用程序。

最后一点 - 简单地运行 md5deep -l -r mydir | gzip > md5deep.txt.gz 可能会更容易在每台服务器上的 cron 中,这样您就可以将文件列表与每台服务器上的校验和进行比较(压缩,因此可以快速获取)。

关于php - 两台服务器之间的差异图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18118850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com