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

时间:2019-02-04 10:54:50

标签: rsync

当我和我的同事将一个PHP Web项目上载到生产环境时,我们使用rsync通过以下参数进行文件传输:

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

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

但是,当我的同事执行完相同的命令后,他会看到很长的所有文件列表(尽管内容相同),而且速度非常快。

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

因此,对我来说,我们得到的是正确的输出,仅显示更改,但是如果其他人从另一台计算机上载,则rsync会将所有内容视为更改。

我相信这可能与文件许可权或时间有关,但想知道如何最好地解决此问题。

我们的想法是,无论是谁上传和以什么顺序上传,我们都只能看到更改。

在一个巨大的项目中看不到巨大的文件列表,因此我们不知道实际更改了什么。

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

1 个答案:

答案 0 :(得分:1)

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

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

偶然地,有两个人使用rsync来更新生产服务器似乎容易出错且脆弱。您应该考虑将文件放入Git并将其推送到服务器(您需要一个服务器端挂钩来更新工作副本,以供Web服务器使用)。