Контроль версий для MP3?

1166
Electrons_Ahoy

У меня есть много «бинарных носителей», которые я абстрагирую как «MP3». У меня также есть несколько компьютеров, на которых я хотел бы иметь всю библиотеку - рабочий стол, медиа-бокс, ноутбук здесь или там и т. Д. Короче, было бы неплохо иметь возможность синхронизировать все эти машины с каждым другой такой, что все они имеют одинаковый стек файлов.

Система контроля версий, в отличие от rsync / robocopy lashup, в грубом смысле этого слова кажется подходящей. Во-первых, задействовано несколько ОС (Windows, Mac, Linux). Во-вторых, было бы неплохо, если бы при обновлении тегов ID3 ​​и тому подобного система могла просто обновить дельту файла, а не заново копировать весь файл. (Наконец, возможность обновления библиотеки через Интернет, а не по локальной сети, была бы очень полезна.)

Но у вашей классической системы CVS / SVN есть очевидный недостаток - необходим полный репозиторий для работы, и я бы предпочел не иметь двух копий моей папки 60gb + MP3, где-нибудь на машине, а также не иметь дело с бинарными дельтами. Что ж.

Итак, Distributed Version Control начинает звучать довольно хорошо на этом этапе. Mercurial, git и bazaar хорошо смотрятся на бумаге, но у меня нет опыта работы с ними. Кто-нибудь пытался настроить DVCS "только для двоичных файлов" с любым из них? Любые рекомендации? Ловушки?

7
Вы проверили типичные дельты для обновлений медиа-файлов? Я предполагаю, что они будут почти такими же большими, как исходный файл. nagul 14 лет назад 4
@nagul: точно! Я надеялся, что кто-то знал о DVCS, которая делала бинарные дельты, которые не были такими большими. Electrons_Ahoy 14 лет назад 0
Э-э Битва систем контроля версий ... bgw 14 лет назад 0
@Electrons_Ahoy: Я думаю, что и SVN, и Git делают двоичные дельты. Проблема в том, что если вы сделаете что-нибудь со звуковыми данными, ваши MP3-файлы будут повторно сжаты. Это, вероятно, меняет каждый бит. Дельта-сжатие здесь ничего не поможет. Если вы редко изменяете звуковые данные и обычно просто редактируете теги ID3, то все по-другому. Ludwig Weinzierl 14 лет назад 1
Разве ты не слышал? `rsync` существует специально для того, чтобы * не * копировать файлы целиком, когда вы это делаете. SamB 14 лет назад 0
@SamB: Well, sure. And if the machines involved weren't primarily windows machines without either rsync or SSH installed, I'd have just done that first. ;) The DVCS idea was an attempt to solve the cross-platform issue without having to get a full unix subsystem running on the windows boxen just to copy some mp3s, you know? Electrons_Ahoy 14 лет назад 0
@Electrons_Ahoy: ах. да, похоже, не хватает красивого, простого в установке, простого в использовании клиента rsync, который не требует установки всего Cygwin ... SamB 14 лет назад 0
[git-annex] (http://git-annex.branchable.com/) заставляет git работать так, как будто вы хотите derobert 11 лет назад 0

5 ответов на вопрос

5
The How-To Geek

Это не совсем ответ на ваш вопрос, но я начал использовать DropBox для той же цели. Он кроссплатформенный, и вы можете получить 100 ГБ аккаунт, если не возражаете заплатить немного больше. Он также хранит ревизии в файлах, очень похожие на систему контроля версий.

Он спросил: «Система могла бы просто обновить дельту файла, а не повторно копировать весь файл». DropBox скопировал бы весь файл и использовал бы большую пропускную способность, потому что ему не нужно было быть внешним по отношению к своей локальной сети ... Patrick Desjardins 14 лет назад 0
DropBox выполняет двоичный анализ и не копирует весь файл. https://www.getdropbox.com/help/8 The How-To Geek 14 лет назад 1
3
Ludwig Weinzierl

Но у вашей классической системы CVS / SVN есть очевидный недостаток - необходим полный репозиторий для работы, и я бы предпочел не иметь двух копий моей папки 60gb + MP3, где-нибудь на машине, а также не иметь дело с бинарными дельтами. Что ж.

С CVS / SVN у вас есть один репозиторий и несколько рабочих копий. Таким образом, хранилище содержит каждый файл один раз, а также всю историю для каждого файла. Рабочая копия содержит каждый файл один раз плюс некоторые дополнительные данные на файл (обычно приблизительно размер файла).

Очень грубо: предположим, что наша система контроля версий не может эффективно хранить различия в двоичных файлах (не совсем так, но для простоты). Ваша коллекция - это 60 ГБ MP3-файлов. Если у вас есть в среднем 10 ревизий на файл, и мы пренебрегаем сжатием (потому что MP3 сжимают плохо), ваш репо будет около. 600 ГБ и ваша рабочая копия ок. 120 Гб.

Итак, Distributed Version Control начинает звучать довольно хорошо на этом этапе.

В распределенной системе каждая рабочая копия по сути является хранилищем, то есть каждая рабочая копия содержит каждый файл плюс историю.

Те же предположения, что и выше, каждая копия будет иметь ок. 600 ГБ.

Суть в том, что распределенной системе потребуется больше места, чем централизованной.

РЕДАКТИРОВАТЬ:

Даже если ваш вопрос больше касается большого количества двоичных файлов, чем больших двоичных файлов в системе контроля версий, может заинтересовать следующий пост: Пересмотр проблемы с большими двоичными файлами.

Удивительно, но это как раз наоборот. SVN очень мало места - рабочая копия без истории в 2 раза больше файлов, находящихся под ее контролем. Git, Mercurial и Bzr часто имеют меньшие размеры репозитория, чем извлечения SVN, и включают полную историю. Информация о размерах GIT: http://git.or.cz/gitwiki/GitSvnComparsion#SmallSpaceRequirements ehempel 14 лет назад 0
@echempel: Вы правы, если мы говорим о типичных случаях использования SVN и Git, то есть исходного кода с небольшими изменениями между ревизиями. MP3 отличаются: 1. не могут быть сжаты 2. небольшие изменения (например, нормализация) будут меняться каждый бит Ludwig Weinzierl 14 лет назад 3
Хорошие моменты ... Я никогда не делал много с бинарными файлами в VCSes. Кто-то должен сделать всестороннюю перестрелку VCS как http://shootout.alioth.debian.org ehempel 14 лет назад 1
На самом деле, я считаю, что большинство DVCS достаточно хорошо сжимают дельты, что простое изменение тегов ID3, вероятно, не вызовет особых проблем ... SamB 14 лет назад 1
2
Ryan Bolger

Проблема с попыткой включить системы контроля версий в системы синхронизации файлов состоит в том, что в конечном итоге вы потеряете тонну дискового пространства, сохраняя все старые данные истории версий в репозиториях.

Лично для моих больших двоичных мультимедийных коллекций меня не волнует возможность отмены изменений в любом файле. Все, что меня волнует, - это то, что коллекция синхронизируется между моими системами. Существует множество решений для синхронизации файлов, но у каждого из них есть свои плюсы и минусы. Некоторые утверждают, что они кроссплатформенные, но это означает только Win / Mac. Другие действительно кроссплатформенные, но не имеют достаточно больших ограничений размера / количества файлов, чтобы быть полезными для больших коллекций. Некоторые предлагают веб-доступ к файлам, но также страдают от ограничений размера / количества файлов. Любое решение, которое хранит копию ваших файлов на стороннем сервере, неизбежно будет стоить вам денег, если у вас большая коллекция файлов.

2
Oskar Duveborn

Не совсем ответ, но я думал, что поделюсь. Я начал использовать SVN для своих HD-видео проектов (например, на мероприятиях и свадьбах, где результатом является сильно отредактированное видео). Это начинает становиться действительно удивительным по нескольким причинам.

Обычно в видеопроекте содержится несколько, а может быть, десятки или даже сотни ГБ необработанных файлов AVCHD (по большей части всего несколько сотен МБ каждый с момента перехода с DV-лент;). Они добавляются и фиксируются один раз, а затем никогда не изменяются, поскольку затем выполняется вся работа над файлами проекта программного обеспечения для редактирования видео (очень маленькими и часто основанными на тексте или в формате xml), некоторыми неподвижными изображениями (которые иногда, но не очень часто изменяются) и различными другие файлы дескрипторов.

Маркировка и наименование клипов также хранятся в файлах проекта и не добавляются в реальные необработанные видеофайлы, что делает этот идеал идеальным. Скажем, база данных репозитория проекта начинается с 10 ГБ, обычно она заканчивается с 11 ГБ и состоит из ~ 100 ревизий. Конечный результат в разных форматах, конечно же, вообще не сохраняется в репозитории, так как его всегда можно сгенерировать заново.

Поскольку mp3-файлы, в частности, сохраняют свои метаданные в реальном mp3-файле, это представляет собой гораздо большую проблему, но в соответствии с этим вопрос о стековом потоке Subversion может решить эту проблему в конце, так как данные тега id3 хранятся в начале (или v1 в конце) файла. Тем не менее, поскольку v2.x может быть любой длины - я понятия не имею, что произойдет, если вы добавите дополнительные данные тега - если файл увеличится и, возможно, испортит дельта-сравнение, которое стоит протестировать ...

А хранилище дешево - всего 60 Гб? Получить несколько 1 ТБ дисков для хранилища и покончим с этим;)

0
STW

Windows Vista & 7 предлагает теневое копирование / предыдущие версии. Он определенно не так богат, как настоящий поставщик систем управления версиями, но дает вам некоторые преимущества. Как уже говорили другие, хранилище, необходимое для размещения нескольких ревизий, вероятно, будет довольно большим - в зависимости от размера файлов.

Бесплатные и популярные SCM все так себе в задаче. SVN, например, будет работать нормально, но хранилище будет быстро расти, и локальная папка .svn также будет довольно большой.

Когда все сказано и сделано, вы можете просто скопировать всю партию файлов в безопасное место, прежде чем вносить какие-либо значительные изменения в свою коллекцию; когда вы на самом деле используете MP3 обычным образом, нет особой причины для изменения файлов, и затраты на ревизионную систему для просмотра редко изменяемых больших двоичных файлов, кажется, трудно оправдать ... но если вы ' установите его, тогда SVN, по крайней мере, делает двоичные различия, CVS делает полные копии (намного больше)

Похожие вопросы