特定のファイルの複数の「代替」を管理するのに役立つユーティリティはありますか?

特定のファイルの複数の「代替」を管理するのに役立つユーティリティはありますか?

私がここに提示する例は、単純なメディアファイルパズルです。

この例では、特定のオーディオファイルの複数のバージョンがあるとします。

SomeSongLibrary/
     awesome-song-compressed.mp3
     awesome-song-lossless.flac
     awesome-song-raw-project-file.binaryblob

また、ある時点で、これらのファイルの1つにのみ興味があるメディア再生アプリケーション(JellyfinやQuodlibetなど)もあります。たとえば、Jellyfinは特定のファイルをグローバルに無視することはできないため、指定されたハイライト曲が2回表示されます(誤ってそのバイナリをインポートしないと仮定すると、これが発生する可能性があることがわかりました!)。

これは私の問題が始まったところであり、単一のファイルの複数の「フォーク」を管理したいという欲求が現れ始めました。

それでは、質問はユーザーフレンドリーな方法(cliを許可)でこの問題を解決する方法はありますか?

この問題を解決するために私が見つけた最も簡単だが最も不器用な方法は、実際のコンテンツへのシンボリックリンクを持つ隠しフォルダを使用することです。しかし、ファイル拡張子が必須リンクと一致しないようです。この例は次のとおりです。

SomeSongLibrary/
     awesome-song-link # symlink, points to files inside swap
     .awesome-song-swap/
          awesome-song-compressed.mp3
          awesome-song-lossless.flac
          awesome-song-raw-project-file.binaryblob

ユーティリティアプリがないと、各ファイルに正しいリンクを設定する必要があるため、エラーが発生しやすくなります。また、特定のUnixアプリケーションがファイルの種類を決定するためにファイル拡張子にまったく依存せず(それを望んでいるが保証することはできません)、アプリケーションがファイル拡張子にまったく依存しないことを心から望む必要があります。スキャン中に隠されたメディアフォルダをスキップします。

私が考えた後の解決策は、フォルダごとにgitプロジェクトを使用し、ファイルの種類やコンテンツのコレクションごとに分岐を使用することでした。したがって、gitリポジトリを作成し、SomeSongLibrary各ファイルタイプ(など)に対してブランチを作成し、特定のファイルの他のバージョンにアクセスしたい場合は、そのブランチを切り替えることができます。SomeSongLibrarymp3flac

これは理論的には素晴らしいですが、gitはバイナリファイルを扱うのがあまり好きではないのでひどいです。バイナリファイルのコストは、最初に複数のコピーを持つよりもはるかに悪くはありませんが、awesome-song-compressed.mp3変更されるファイル(更新されたタグなど)を考慮するときはそうではありません。さらに、フルバージョン制御システムに関連する全てのトラップは実際には必要ではない。最後に、フォルダ全体を一度に管理するよりも、フォルダ内の個々のファイルを管理する方が良いです。したがって、ファイルごとにバージョンが異なる場合があります。

だからこれはありそうもないことですが、誰かがそのような問題に直面して賢い解決策(スクリプトまたはアプリケーション全体)を思いついた人はいますか?また、これは良い考えですか、それともunix / posixファイルシステム標準に違反していますか?

関連情報