虽然之前在这个网站及其同类网站上也曾有人问过类似的问题,但我还是没能找到这个长期问题的答案。任何帮助我都非常感谢。
情况: 我有两台笔记本电脑,两台电脑都存储了大量音乐。有时我会将这些音乐文件移动到不同的位置,或者更改其中的元数据,或者将它们转换为不同的格式。我可能会在任意一台电脑上执行这些操作。我很少一次完成所有这些操作 — 也就是说,我不太可能一次性转换文件格式并将其移动到不同的位置。我希望能够同步这些更改,而不必筛选所有重命名或移动的内容。
我熟悉 rsync,但我觉得它不够好,因为
- 尽管它可以计算校验和,但它没有任何方法来存储它们。因此,如果文件不同,它无法确定它在哪一侧发生了更改。这也意味着它无法尝试将丢失的文件与具有相同校验和的新文件进行匹配(即移动)
- 如果文件大小和日期相同,则需要花费一个纪元才能对大型存储库进行同步。我只想在文件
- 即使你打开校验和,它仍然不会智能地使用它:也就是说,即使文件大小不同,它也会计算文件校验和。如果我没记错的话。
- 它不能使用文件元数据作为文件比较的手段。这有点像一个愿望清单项目,但似乎是可行的。
我也研究过 rsnapshot,但在这种情况下,它要求创建完整备份是不切实际的。我不需要备份,我只需要记录每个哈希值所在的文件在何时何地。Unison 似乎可以做一些类似的事情,但我不愿意花几个小时仔细研究它的细节,却发现它严重缺乏。另外,在这里提问很有趣。
我想要的是一个可以做类似以下事情的工具:
- 跟踪文件校验和或实际重命名,可能使用 inotify 来大大减少资源消耗/延迟
- 存储包含此信息的数据库,以及其他相关内容,如文件格式和元数据、实际的 inode、文件名历史记录等。
- 使用此信息与另一端的对应方进行更智能的同步。
例如:如果文件已从 flac 转换为 ogg,但保留了相同的基本文件名或相同的元数据,则它应该能够发送新版本,而另一方应该删除原始版本。也许它应该将其隔离在某个地方,以防他们或你搞砸了,但这是一个细节。然后,当事务完成时,状态将被记录下来,以便下次两者交互时,他们可以解决差异。
也许所有这些元数据都是一个幻想。如果真的有什么东西可以以智能的方式使用校验和,我会非常高兴。这有点像拥有 git 之类的智能,但不需要复制索引/备份/等中的数据(以及分支、签出和 RCS 所做的所有其他很棒的事情。基本上,我想要的只是快速提交推送,也许还有回滚选项。)
那么有没有什么可以做到这一点?如果没有,有人可以建议一个好的开始方法吗?
答案1
我用过齐奏效果很好。而且是免费的。
答案2
听起来你在说Windows Live 同步...
答案3
你看过微软的免费同步玩具? 我用它来处理我的媒体文件,听起来你正在寻找我在这个工具中使用的类似功能。它不使用文件信息数据库,但它似乎可以很好地处理我的格式更改。不过,也许我对效率的要求不一样!