单向同步文件夹

单向同步文件夹

使用 Bash,我需要复制并覆盖一些具有相同名称但源内容不同的文件,同时忽略相同的文件。

cp我在手册中没有看到仅复制不同文件的选项。

首先,我尝试使用cp“更新”选项,但它不会将旧文件从源复制到目标。

cp -a -u SOURCE DESTINATION

如果我删除该-u参数,它会正确复制所有文件,但我想避免不必要的复制。

我需要这样的东西:

  1. 当目标与源不同时,必须复制源文件。
  2. 有时目的地比源更新。尽管如此,复制还是必须完成。
  3. 仅当源文件与目标文件相同时,才必须忽略它们。

我该怎么做呢?

答案1

cp不比较文件内容,仅比较时间戳。

改用rsync

rsync -acv SOURCE/ DEST/

要获得更少的输出,请删除该v标志。

答案2

您可以应用许多可用的校验和命令之一。对于这个简单的情况,一个简单的算法可能就足够了。如果校验和比较相等,则两个文件相同的可能性很高。

相关内容