同步移动、复制和删除操作,而不仅仅是文件

同步移动、复制和删除操作,而不仅仅是文件

我想知道是否存在任何同步方法,如果文件已经在目标文件夹中,则不会复制文件。

让我解释:

我拍了一些照片,并将它们放在笔记本电脑的一个文件夹中。为了将它们备份到我的 Ubuntu 服务器上,我只需运行rsync -vrutP source des/ti/na/tion/。然后我决定将所有 RAW 放在笔记本电脑的一个子文件夹中 ( source/RAW),将 JPG 放在另一个子文件夹中 ( source/JPG)。

现在,如果我想将其镜像到服务器,我必须运行,rsync -vrutP --delete source/ des/ti/na/tion/但如果我这样做,我的所有文件都会从服务器中删除,然后再从我的笔记本电脑复制到服务器。我有几 GB 的图片,如果有时间等待并且有以太网连接而不是 WiFi,这不是问题。

但是,如果有一个命令可以比较根文件夹“源”中的文件并仅应用源和目标之间的位置差异,那么速度会不会快得多,即使对 CPU 的要求更高?列出所有文件需要更多 CPU,但我几乎不需要带宽来传输我不需要传输的文件,因为它们已经在目标中了,即使它们在不同的地方。当然,一个必备的功能是增量同步,它还可以检测现有(但已移动)的文件是否与源文件夹中的文件完全相同。

我知道有软件可以做到这一点(Syncovery、Goodsync),但我实际上想知道在 Linux 和 Windows 上是否有任何命令可以做到这一点。

答案1

一方面是的……因为你处于一个非常具体的用例中。另一方面,在 Linux 中移动或重命名文件是同样的事情。要发现源上的文件是否刚刚被重命名,系统必须将其(或其哈希值)与备份中的所有文件进行比较,因此必须读取备份中的所有文件来计算它们的哈希值……这将非常耗时,除非哈希值保存在侧面数据库中。有些存储系统可以这样做……但不是你的普通文件系统。

相关内容