제가 여기서 제시하는 예는 간단한 미디어 파일 퍼즐입니다.
이 예에서는 특정 오디오 파일의 여러 버전이 있다고 가정해 보겠습니다.
SomeSongLibrary/
awesome-song-compressed.mp3
awesome-song-lossless.flac
awesome-song-raw-project-file.binaryblob
또한 특정 시점에 이러한 파일 중 하나에만 실제로 관심이 있는 미디어 재생 응용 프로그램(예: Jellyfin 또는 Quodlibet 등)이 있습니다. 예를 들어 Jellyfin은 특정 파일을 전역적으로 무시할 수 없으므로 주어진 하이라이트 노래가 두 번 표시됩니다(실수로 해당 바이너리를 가져오지 않는다는 가정 하에 이러한 일이 발생할 수 있음을 발견했습니다!).
이것이 내 문제가 시작된 곳이며 단일 파일의 여러 "포크"를 관리하려는 욕구가 나타나기 시작했습니다.
그러면 질문은 사용자 친화적인 방식(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
유틸리티 앱이 없으면 각 파일에 대해 올바른 링크를 설정해야 하므로 오류가 발생하기 쉽습니다. 또한 특정 유닉스 응용 프로그램이 파일 형식을 결정하기 위해 파일 확장자에 전혀 의존하지 않고(그렇기를 바라지만 보장할 수는 없음) 응용 프로그램이 파일 확장자에 전혀 의존하지 않기를 진심으로 바랄 필요가 있습니다. 스캔하는 동안 숨겨진 미디어 폴더를 건너뜁니다.
제가 생각한 다음 해결책은 폴더별로 git 프로젝트를 사용하고 파일 유형이나 콘텐츠 모음별로 분기를 사용하는 것이었습니다. 따라서 git 저장소를 만들고 SomeSongLibrary
각 파일 유형(등)에 대한 분기를 만든 다음 특정 파일의 다른 버전에 액세스하려는 경우 해당 분기 간에 전환할 수 있습니다.SomeSongLibrary
mp3
flac
이것은 이론적으로는 훌륭하지만 git은 바이너리 파일을 다루는 것을 별로 좋아하지 않기 때문에 끔찍합니다. 바이너리 파일의 비용은 처음에 여러 복사본을 갖는 것보다 훨씬 나쁘지는 않지만 awesome-song-compressed.mp3
변경되는 파일(예: 업데이트되는 태그)을 고려할 때는 그렇지 않습니다. 또한 전체 버전 제어 시스템과 관련된 모든 함정이 실제로 필요하지 않습니다. 마지막으로, 전체 폴더를 한 번에 관리하는 것보다 폴더 내의 개별 파일을 관리하는 것이 더 좋습니다. 따라서 파일마다 버전이 다를 수 있습니다.
따라서 이것은 있을 법하지 않은 일이지만 누군가 그러한 문제에 직면하여 영리한 해결책(스크립트 또는 전체 응용 프로그램)을 생각해 낸 사람이 있습니까? 또한 이것이 좋은 생각입니까, 아니면 unix/posix 파일 시스템 표준에 어긋나는 것입니까?