我如何修改“cp -ru”以删除目标中源中不再存在的文件?

我如何修改“cp -ru”以删除目标中源中不再存在的文件?

我有一个目录,其中包含许多子目录和数百万个文件。总大小约为 15GB。我有一个短暂的时间窗口(最好是 30 秒左右)来将此目录的更改镜像到另一个驱动器上的第二个相同目录。驱动器是 SSD。

我尝试过各种版本的 tar 和 rsync,但最终选择了“cp -ru”,因为它能够在允许的时间内复制新文件和更改的文件。第一个 cp 可能需要 15 分钟;但以后的“cp -ru”只需要 20 到 40 秒。我尝试过的其他选项要慢得多(需要几分钟)。

我的问题是,我最终得到了“多余”的文件。可能在源文件上短暂存在的文件最终会永远存在于目标文件中;即使它们已从源文件中删除。有没有办法修改“cp -ru”以消除源文件中不再存在的目标文件?或者这会减慢太多速度?

或者也许二次操作可以以“只读”方式扫描源并删除目标中的文件?此操作可能需要更长时间;因为我的备份间隔大约为 1 小时。在此期间我无法实际复制文件,因为它们位于实时服务器上(文件正在被修改)。

我愿意尝试 cp 以外的其他选项;但它需要能够在大约 30 秒内处理数百万个文件的备份更改。

我正在运行 Ubuntu Server 14.04.3 LTS。

相关内容