我正在编写一个程序来比较,并根据两端的更改复制整个文件或段(Rsync-esque ...但更像Unison)。主要想法是让我的音乐文件夹(所有 mp3)在多个位置保持最新。
如果只有文件的一小部分发生了更改,我想发送分段更新,而不是复制整个文件。为此,我需要一种方法来区分文件的各个部分。
我最初尝试为每个文件的块生成散列(每 n 个字节我对段进行散列)。我注意到,当我更改一个属性(mp3 上的 id3v2 标记)时,所有散列块都会更改。这是有道理的,因为我猜标题会随着它获取新信息而增长。
这引出了我的实际问题。我想知道如何确定 mp3 标题的长度,所以我可以创建 2 个可比较的哈希值。
1)文件的元信息(头)
2)带有音频的实际mpeg流(如果我所做的只是改变标签信息,这个哈希应该保持不变)
我还缺少什么吗?
谢谢!
泰