#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
.