如何从 shellscript 检测远程服务器上的文件是否已发生改变?

如何从 shellscript 检测远程服务器上的文件是否已发生改变?

什么可以用来检测远程文件与本地文件的不同?

可能使用 ssh 作为通信渠道。用 bash 编写脚本,考虑到 Linux 服务器。

这可以基于文件内容(md5sum),但我想(从修改时间)推断哪个文件较新......

我正在尝试检测服务器上的某些配置文件与版本控制下的副本相比是否已被编辑,并合并更改。

答案1

可以处理本地和远程(通过 ssh)主机的一个解决方案是rsync

rsync -av -n -c src/ dst/

-n标志表示rsync实际上不进行任何传输 - 因此输出将只是它想要传输或更改的文件。-c确保 rsync 进行 MD5 比较。如果您只想根据大小和上次修改时间进行匹配,只需省略-c


另一种方法是将两个目录都签入git存储库。这需要非常熟悉,git但可以通过在单独的分支中维护每个主机的文件来实现。然后可以git fetch(省略隐含的合并git pull)并git diff在分支之间使用来检查更改。这个问题在这样的设置中可能会有用。

相关内容