Контроль версий двоичных файлов / папок в 2020 году?

#version-control #backup #versioning

#контроль версий #резервное копирование #управление версиями

Вопрос:

Я хотел бы сохранить «снимки / версии» папки, содержащей множество огромных двоичных файлов. Папка содержит все мои резервные копии, сделанные через rsync/rclone/scp/whatever . Поскольку исходный код может быть поврежден / взломан каким угодно образом, я бы хотел сохранить все версии.

Мы все знаем, что git / subversion не созданы для файлов, отличных от текста, и мне интересно, есть ли более общий инструмент для этой цели.

Я буду использовать исключительно Linux.

Ответ №1:

git-annex — определенно тот инструмент, который вам нужен для этой работы.

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

Краткое руководство пользователя:

Установите его с помощью sudo apt-get install git-annex , после чего вы сможете управлять своими данными точно так же, как вы бы делали с git.

 git init
git annex init "main-backup"
git annex add  # if you don't specify any paths, it adds everything
# it'll hash your files and store them inside the .git folder with their hash as their filenames
git commit -m "Add my most important files"
  

Комментарии:

1. Никогда не слышал об этом, несмотря на все мои поиски. Добавление всех файлов занимает целую вечность git annex add , кажется, что файлы куда-то копируются?!

2. Также git-annex заменяет все файлы символическими ссылками. Это нарушает рабочий процесс с использованием rclone и rsync.

3. git-annex не копирует файлы, если вы не укажете это. По умолчанию файлы хэшируются с помощью SHA256. И для хеширования требуется много операций ввода-вывода. Символические ссылки приведены для вашей безопасности. И я уверен, что есть способы заставить rsync следовать символическим ссылкам в пункте назначения. Вы также могли бы создать репозиторий git-annex в исходном коде и вместо синхронизации между исходным кодом и местом назначения вы могли бы просто git annex sync .

4. Повторное чтение вашего вопроса заставило меня подумать, что bup может быть полезен, потому что он использует скользящую контрольную сумму для разделения больших файлов на куски и дедупликации среди них. Кстати, git-annex также поддерживает bup как удаленный, так что вы можете наслаждаться дедупликацией с помощью удобного интерфейса git-annex.

5. С rclone -S для перехода по символическим ссылкам он не может синхронизироваться. Я получаю `[..] отказано в разрешении`, потому что все файлы в .git/annex/objects/... доступны только для чтения. Я попробую с bup .