Після року розробки представлений випуск системи резервного копіювання 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.
Джерело: opennet.ru