两台机器之间文件位置的同步

虽然以前在这个网站和它的兄弟姐妹都有过类似的线索问题,但我还没有设法收集这个持续性问题的答案。 任何帮助深表感谢。

情况:我有两台笔记本电脑; 都包含了大量的音乐。 有时我会将这些音乐文件移到不同的位置,或者更改其中的元数据,或将它们转换为不同的格式。 我可以在任一台机器上做这些事情。 我很less一次完成所有这些工作,也就是说,我不太可能将文件格式转换为一个文件格式,而是将其移动到另一个位置。 我希望能够同步这些更改,而无需筛选重命名或移动的所有内容。

我熟悉rsync,但我觉得它不足,因为

  • 虽然它可以计算校验和,但是没有任何方法来存储它们。 所以,如果一个文件不同,它不能找出它改变的一面。 这也意味着它不能尝试将缺less的文件与具有相同校验和的新文件进行匹配(即移动)
  • 如果文件大小和date相同,那么需要在大型存储库上进行同步。 我想只检查校验和如果文件
  • 即使打开校验和,也不会智能地使用校验和,即使校验和文件大小不同也是如此。 IIRC。
  • 它不能使用文件元数据作为文件比较的手段。 这是一个愿望清单项目,但它似乎是可行的。

我也研究过rsnapshot,但是在这种情况下创build完整备份的要求是不切实际的。 我不需要备份,我只需要logging每个散列在哪个文件的时间。 Unison似乎可能会沿着这些线条隐约地做些事情,但是我厌恶花上几个小时在细节上花费时间才发现它是可悲的缺乏。 另外,在这里问问题很有趣。

我想要的是一个工具,可以做这样的事情:

  • 跟踪文件校验或实际重命名,可能使用inotify大大减less资源消耗/延迟
  • 存储一个包含这个信息的数据库,以及其他相关信息,如文件格式和元数据,实际的索引节点,文件名历史logging等等。
  • 使用这个信息来提供与另一方的对方更智能的同步。

所以例如:如果一个文件已经从flac转换到了ogg,但是保持了相同的基本文件名或者相同的元数据,它应该能够发送新的版本,另一方应该删除原来的文件。 也许它应该在某个地方把它固定在某个地方,以防他们或你搞砸了,但这是一个细节。 然后,当交易完成后,状态会被logging下来,以便下一次进行交互时,他们可以计算出它们之间的差异。

也许所有这些元数据是一个奇特的梦想。 如果有些东西可以用聪明的方式使用校验和,我会非常高兴。 这就好比拥有像git这样的智能,而不需要在索引/备份/ etc中复制数据(以及分支和签出以及所有RCS所做的其他优点,基本上就是快进提交推送都是我想要的,也许可以select回滚。)

那么有没有可以做到这一点的东西呢? 如果没有,有人可以build议一个好的方法开始做出来吗?

我使用了Unison ,效果很好。 它是免费的。

听起来就像你在谈论Windows Live Sync …

你有没有看过微软的免费同步玩具 ? 我把它用于我的媒体文件,这听起来像你正在寻找类似的function,我在这个工具中使用。 它不使用文件信息的数据库,但它似乎pipe理好我的格式更改。 也许我对效率的要求并不一样!

我使用超越比较同步我的数据它工作很好,有很多select

一探究竟

滑板车软件

祝你好运