将分布式离线档案与外部驱动器上的大文件同步

将分布式离线档案与外部驱动器上的大文件同步

我有许多媒体文件(假设有 500 个文件,每个文件 500 MB,尽管有些文件小得多,有些文件大得多),但由于硬盘太小,我无法将它们存储在我的计算机上,所以我想将它们存储在外部驱动器上。

我可以把所有东西都移动到一个驱动器上,但是这样做的话,一旦驱动器崩溃,所有内容就会丢失。所以需要有多个驱动器相互同步。同步应该使驱动器之间可以互换,向一个驱动器添加一个文件也应该将其添加到另一个驱动器,从一个驱动器上删除一个文件也应该在另一个驱动器上删除它,不管哪个是主驱动器哪个是主驱动器,因为我有时使用多台计算机,每台计算机都连接到自己的外部驱动器,我不想在计算机之间携带某种主驱动器。所以同步工具需要保留文件元数据的历史记录,记录哪些文件是新的,哪些文件已被删除。它还应该跟踪重命名,这样它就不会完整复制重命名的文件,因为压缩媒体文件更有可能被重命名而不是被修改。

历史记录还可以使备份更加可靠,如果每个文件都有一个哈希值,它可以检查文件是否仍然完整或是否因磁盘问题而损坏。而且我可以查找文件添加或最后更改的时间,这比文件系统时间戳更可靠。

现在我正在寻找这样的同步工具。(目前我只使用 Linux,但也许有一天我会使用其他操作系统?)

一些不太合适但很接近的工具:

  • rsync:它不保留历史记录。

  • unison:它保留历史记录,但它位于同步计算机上,而不是数据中。如果我在新计算机上同步它们,则需要重新扫描所有内容。并且它使用成对数据库,如果 m 台计算机上有 n 个镜像,它将保留 m 个 n² 历史记录(或者仅保留 mn 个具有星型拓扑的历史记录,但随后它又需要一个主驱动器)。此外,该数据库似乎不是为长期使用而设计的,较新的 unison 版本可能会采用新的数据库格式,然后需要重新扫描所有内容,而 10 年后我无法再查找我添加了哪个文件。

  • 源代码控制、git、hg、svn、gut、boar:文件太大,无法保存所有内容的历史记录。此外,我的收藏中既有重要文件,也有不重要的文件,当空间不足时,我宁愿永久删除不重要的文件,也不愿购买更大的驱动器。

  • bup,git annex:它们将文件从文件系统中删除,并将其存储在自己的基于 git 的文件系统中。这使得访问它们变得困难,我更喜欢一种解决方案,即保持文件原样,只添加跟踪更改所需的元数据。

  • git-media:似乎主要是为了解决 git 的文件大小限制

  • dropbox google drive:未离线

  • owncloud:这似乎是基于始终运行的中央服务器,而不是一堆相同的硬盘。

  • syncthing:它似乎可以永久运行,并立即在计算机之间同步所有内容。我想偶尔在本地进行同步,例如将两个外部驱动器连接到同一台计算机,然后每月同步一次

  • sparkleshare:似乎不适合大文件

相关内容