Git annex: розподілене зберігання великих файлів

  • 2013-02-11
  • (автор: yurb)

Хочу познайомити вас із дивовижним знаряддям на ім'я git-annex. Зацитую український Вікіпідручник програми:

«Уявімо, що у вас є переносний компутор з невеликим вінчестером. Також у вас є стаціонарний компутор, на який і з якого ви можете пересувати через мережу файли. Ви працюєте, і в певний момент вам бракне місця на переносному компуторі — й ви пересуваєте частину файлів на стаціонарний. А ще частину — на зовнішній вінчестер. І ви опиняєтесь в становищі, коли ваші дані розпорошені між трьома різними пристроями.

Чи не чудово було б, якби в кожен такий момент ви могли продовжувати бачити перелік усіх ваших файлів, а також мали можливість легко отримати будь-який з них, не шукаючи перед тим півдня, на якому пристрої ви його розмістили? І якщо вам треба «розчистити» місце для отримання інших файлів, бути певними, що ви не вилучите файли, яких більше ніде немає? І ще: якщо ви змінюєте, переміщуєте чи перейменовуєте файли на одному з ваших пристроїв, щоб ці самі зміни автоматично відтворювались і на решті ваших пристроїв, на які ви скопіювали свої файли? Ви, мабуть, довго мріяли про таку можливість, чи не так?»

Git-annex забезпечує вам такі можливості. Огляд та приклади використання програми можна прочитати у Вікіпідручнику (який можна також редагувати й доповнювати), тому дублювати їх тут немає сенсу. Скажу тільки, що якщо система керування версіями git є дуже вдалим інструментом для роботи з кодом програм та текстовими документами, то git-annex (який, як ви, мабуть, здогадались, працює на основі git) — настільки ж вдалим знаряддям для синхронізації та розподіленого зберігання великих об'ємів даних між різними присторями. Git-annex, на відміну від простого git, не зберігає повної історії кожного файлу, завдяки чому добре пасує до зберігання великих бінарних файлів, як то звукові чи відео-записи. Крім того, програма дає можливість мати в репозиторії тільки частину повного набору його файлів, а решту зберігати в инших репозиторіях-клонах.

Тобто зберігання самих даних відділене від зберігання структури тек та історії дій. При тім, git-annex дбає, щоб кожен файл зберігався хоча б в одному з репозиторіїв-клонів. Таким чином ваші дані є упорядкованими незалежно від того, на скількох пристроях вони зберігаються.

Якщо вас зацікавила програма, її Вікіпідручник допоможе ознайомитись із нею глибше.