使用 Git 管理 iTunes 库?

Nat*_*ate 8 itunes git

我一直在考虑使用 Git 来管理我的 iTunes 库并允许我在计算机之间同步它。

你能想出任何理由为什么这会是一个坏主意吗?

Eva*_*van 16

主要缺点是磁盘空间。存储库本身将占用与“签出”文件集相同的空间量。这意味着当您克隆存储库时,您的集合基本上将占用两倍的磁盘空间。

更糟糕的是,即使您删除了不再需要的文件,您的存储库中仍然会有副本,占用空间。

您可能需要查看同步工具,例如unison,它专为跨多台机器的文件双向同步而设计。


dbr*_*dbr 6

你能想出任何理由为什么这会是一个坏主意吗?

Git 不适合这种用法。

git 的工作方式是将存储库数据保存在.git/文件夹中。对于文本,这不是问题,它可以轻松压缩,并且文件很小 - 存储库可能是一两个兆字节。

压缩数据(MP3、JPEG 等)不能被 git 进一步压缩,并且由于您实际上需要存储数据的两份副本,这将使所需的磁盘空间增加一倍(一个用于文件,一个用于存储库)

文本很小,可压缩,重要的是您可以轻松地在两个修订版之间“区分”——只存储更改。如果您只更改一行,则 git 仅存储该行(以及任何关联的元数据,例如提交消息)

二进制文件很难区分,因此假设您修改了 100 个文件上的标签(例如,添加艺术品或更改流派),git 将在其.git/目录中存储这些文件的新副本。假设您从音乐的元数据中删除所有评论,然后 git 将存储另一个完整的文件副本!这意味着您的存储库现在将是实际文件大小的两倍以上(假设您有 10GB 的音乐,您的音乐文件夹现在将超过 30GB)

正如我所说,git 不适合这样的事情——它旨在跟踪源代码,对文本文件进行很多小改动,而不是大的二进制文件。当您只需要一个同步工具时,保留音乐库的修订历史没有多大意义。

由于您正在考虑使用 git,我假设您对命令行工具感到满意,因此我建议您考虑使用 rsync 在机器之间同步您的 iTunes 库。正如 joshhunt 提到的,最大的问题是 iTunes 使用媒体文件的绝对路径,因此iTunes Library.xml文件包含诸如..

<key>Location</key>
<string>file://localhost/Users/dbr/Music/iTunes/iTunes%20Music/65daysofstatic/Hole/01%20Hole.mp3</string>
Run Code Online (Sandbox Code Playgroud)

如果您在所有机器上使用相同的操作系统和相同的用户名,这不是问题 - 将文件保持在相同的路径中,它应该可以正常工作。如果没有,事情会变得有点复杂..

您可以编写两个脚本,一个更新从 machineA 到 machineB 的路径,反之亦然。您可以将您的 iTunes 库移动到某个地方,/User/Shared/Music/这样路径是相同的(尽管这可能不适用于 OS X -> Windows)

有一些实用程序可以在机器之间同步 iTunes 库,例如..

(来自这篇文章