После года разработки представлен выпуск системы резервного копирования restic 0.13, предоставляющей инструментарий для сохранения резервных копий в версионированном репозитории, который может размещаться на внешних серверах и в облачных хранилищах. Данные хранятся в зашифрованном виде. Возможно определение гибких правил для включения и исключения файлов и каталогов при создании резервной копии. Поддерживается работа в Linux, macOS, Windows, FreeBSD и OpenBSD. Код проекта написан на языке Go и распространяется под лицензией BSD.
Основные возможности:
- Поддержка хранения резервных копий в локальной ФС, на внешнем сервере с доступом по SFTP/SSH или HTTP REST, в облаках Amazon S3,
OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage и Google Cloud Storage, а также в любых хранилищах для которых имеются бэкенды rclone. Для организации хранения также может быть использован специальный rest server, обеспечивающий более высокую производительность по сравнению с другими бэкендами и способный работать в режиме только для дополнения, который не позволит удалить или изменить резервные копии в случае компрометации исходного сервера и доступа к ключам шифрования. - Поддержка определения гибких правил для исключения файлов и каталогов при создании резервных копий (например, для исключения из резервной копии логов, временных файлов и легко воспроизводимых данных). Формат правил игнорирования привычен и напоминает rsync или gitignore.
- Простота установки, использования и восстановления информации. Для работы с резервными копиями достаточно скопировать один исполняемый файл, который можно использовать без дополнительных настроек. Для самого исполняемого файла обеспечивается повторяемая сборка, позволяющая самостоятельно убедиться, что бинарная сборка сформирована из предоставляемых исходных текстов.
- Поддерживаются снапшоты, отражающие состояние определённого каталога со всеми файлами и вложенными каталогами в определённый момент времени. При каждом создании новой резервной копии создаётся ассоциированный с ней снапшот, позволяющий восстановить состояние в данный момент. Возможно копирование снапшотов между разными репозиториями.
- Для экономии трафика в процессе создания резервных копий копируются только изменившиеся данные. Для обеспечения эффективного хранения данные в репозитории не дублируются, а дополнительные снапшоты охватывают только изменившиеся данные. Система манипулирует не целыми файлами, а блоками плавающего размера, выбираемыми с использованием подписи Рабина. Информация хранится в привязке к содержимому, а не именам файлов (связанные с данными имена и объекты определяются на уровне метаданных блока). На основании SHA-256 хэша от содержимого выполняется дедупликация и исключение лишнего копирования данных.
- Для наглядной оценки содержимого репозитория и упрощения восстановления, снапшот с резервной копией может быть примонтирован в форме виртуального раздела (монтирование осуществляется при помощи FUSE). Также предоставляются команды для анализа изменений и выборочного извлечения файлов.
- Информация на внешних серверах сохраняется в зашифрованном виде (для контрольных сумм используется SHA-256, для шифрования AES-256-CTR, а для гарантирования целостности – коды аутентификации на основе Poly1305-AES). Система изначально рассчитана на то, что резервные копии сохраняются в окружениях не заслуживающих доверия и попадание резервной копии в чужие руки не должно скомпрометировать систему. Шифрование может обеспечиваться как по ключам доступа, так и по паролям.
- Предусмотрена возможность верификации резервной копии по контрольным суммам и кодам аутентификации для подтверждения, что целостность файлов не нарушена и необходимые файлы могут быть восстановлены и не включают скрытых модификаций.
В новой версии:
- Добавлена поддержка негативных шаблонов исключения. Например, “–exclude ‘/home/user/*’ –exclude ‘!/home/user/.config'” для исключения всего содержимого /home/user кроме каталога /home/user/.config.
- В команду “backup” добавлен режим “–dry-run”, который при запуске с опцией “–verbose” позволяет без фактических изменений отследить, какие файлы будут включены в резервную копию.
- В различные бэкенды хранения добавлена поддержка контрольных сумм для дополнительной проверки загружаемых данных.
- Проведена оптимизация команды “restore”, которая стала работать в два раза быстрее. Также повышена производительность команды “copy”.
Release.
Ссылка here.