Rsync - 如何只显示更改的文件

Rsync - How to display only changed files

当我和我的同事将 PHP 网络项目上传到生产环境时,我们使用 rsync 进行文件传输,参数如下:

rsync -rltz --progress --stats --delete --perms --chmod=u=rwX,g=rwX,o=rX

运行时,我们会看到一长串已更改的文件。 运行 这连续 2 次,将始终显示在 2 次传输之间更改的文件。

但是,当我的同事在我完成后运行相同的命令时,他会看到一个很长的所有正在更改的文件列表(尽管内容是相同的),这非常快。

如果他再次上传,那么再次将只有最少的输出。

所以我觉得我们得到了正确的输出,只显示了更改,但是如果其他人从另一台计算机上传,rsync 将认为所有内容都已更改。

我认为这可能与文件权限或时间有关,但想知道如何最好地解决这个问题。

想法是我们只看到更改,而不管上传的人和上传顺序如何。

在一个巨大的项目中看到巨大的文件列表是相当可怕的,所以我们不知道实际上改变了什么。

PS:我们都使用与目标相同的 user@server 进行部署。

命令中的 t 表示复制文件的时间戳,因此如果它们不匹配,您会看到它们得到更新。如果您认为两台机器上的时间戳应该匹配,那么问题就出在其他地方了。

确保时间戳匹配的最简单方法是在进行编辑之前从服务器 down rsync 它们。

顺便说一句,让两个人使用 rsync 更新生产服务器似乎容易出错且脆弱。您应该考虑将您的文件放在 Git 中并以这种方式将它们推送到服务器(您需要一个服务器端挂钩来更新 Web 服务器使用的工作副本)。