Поиск по сайту:

Как использовать программу резервного копирования restic в Linux


Защитите свои драгоценные файлы и незаменимые фотографии с помощью программы резервного копирования restic. Это быстро, зашифровано, и вы можете использовать его прямо из командной строки Linux. Вот как это настроить.

Ценность резервных копий

Все оборудование имеет конечный срок службы. Механические жесткие диски (HDD) и твердотельные накопители (SSD) не вечны. Аварии тоже случаются. Ноутбуки могут быть потеряны, украдены или сброшены с лестницы.

Раньше говорили, что ценность эффективной системы резервного копирования становится очевидной только после того, как вы потеряли данные. Когда происходят сбои или потери, вам нужен быстрый и простой способ вернуть свои файлы и информацию. Если организация теряет данные, последствия могут быть серьезными. Это может даже поставить под угрозу непрерывность бизнеса. Даже в домашних условиях потеря данных может быть болезненным опытом. Резервные копии - единственная разумная защита.

Помимо всего прочего, случайная или злонамеренная потеря данных, позволяющих установить личность, считается нарушением некоторых законов о защите данных, например Общего регламента по защите данных (GDPR).

Есть несколько соображений, которые следует учитывать при выборе программного обеспечения для резервного копирования. Где вы хотите, чтобы ваши резервные копии хранились? На съемном диске, на другом компьютере в вашей локальной сети (LAN) или в облачном хранилище? Очевидно, вам нужно использовать программу резервного копирования, которая может записывать и восстанавливать данные из хранилища данных, которое вы хотите использовать.

Резервные копии должны быть зашифрованы, особенно если они будут храниться вне офиса или в облаке. Если они зашифрованы, они не могут быть прочитаны и восстановлены посторонними лицами.

Программа должна быть быстрой. Вы не хотите целый день ждать завершения резервного копирования или восстановления. Некоторые программы сохраняют базовый образ резервной копии, а затем сохраняют различия между базовым образом и исходным компьютером для каждой последующей резервной копии. Это значительно ускоряет процесс резервного копирования. Он также использует меньше места для ваших резервных копий.

Restic делает все это. Он бесплатный, с открытым исходным кодом, под лицензией 2-Clause BSD License и находится в активной разработке. Исходный код находится на GitHub.

Куда сделать резервную копию

В этой статье мы собираемся хранить наши резервные копии на другом компьютере в нашей сети. Это здорово, потому что это обеспечивает быструю передачу файлов, а также простоту резервного копирования и восстановления. В реальном сценарии вам также необходимо выполнить резервное копирование в другое удаленное место. Если ваши рабочие системы и резервные копии находятся в одном месте, и в этом месте происходит бедствие — пожар, кража или наводнение, — ваш гусь будет готов, если у вас нет резервной копии за пределами предприятия.

Неудивительно, что restic может создавать резервные копии на внешнем диске, который можно вынести из помещения, и, что еще лучше, он может выполнять резервное копирование прямо в облачное хранилище.

Из коробки restic может создавать резервные копии:

  • Локальный каталог или локальный съемный диск.
  • Компьютер, подключенный к сети через протокол передачи файлов SSH (SFTP). Для этого, конечно же, требуется Secure Shell (SSH).
  • HTTP-сервер REST.
  • AWS S3.
  • OpenStack Swift.
  • BackBlaze B2.
  • Хранилище BLOB-объектов Microsoft Azure.
  • Облачное хранилище Google.

Если вам нужно выполнить резервное копирование в место назначения данных, которого нет в этом списке, вы можете объединить возможности rclone с restic и выполнить резервное копирование в любое из 40 или около того мест назначения, которые поддерживает rclone.

Для сетевых резервных копий SFTP требуется, чтобы SSH был установлен и настроен на сервере резервного копирования. Это машина, на которой будут храниться резервные копии. Если вы настроили ключи SSH на сервере резервного копирования и на машине, для которой собираетесь выполнять резервное копирование, вам не нужно будет вводить пароль SSH каждый раз при выполнении резервного копирования.

Одним из способов автоматизации резервного копирования является создание коротких сценариев или функций оболочки и использование cron для их запуска в определенное время. Использование ключей SSH позволит вам избежать проблемы с предоставлением пароля для автоматического резервного копирования.

Установка рестика

Restic-приложение находится в репозиториях основных дистрибутивов Linux, поэтому его установка выполняется в одну строку с использованием менеджера пакетов каждого дистрибутива.

Чтобы установить restic на Ubuntu, введите:

sudo apt install restic

Команда для использования в Fedora:

sudo dnf install restic

В Manjaro мы используем pacman:

sudo pacman -Sy restic

Настройка рестика

Убедитесь, что вы настроили SSH на компьютере с сервером резервного копирования и что вы можете установить удаленное подключение к нему с компьютера, для которого вы собираетесь создавать резервные копии. Это клиентская машина. В нашей тестовой сети клиент называется «ubuntu-20-10», а сервер — «backup-box».

В терминологии restic резервные копии хранятся в виде моментальных снимков в репозитории. Каждая резервная копия создает новый снимок. Нам нужно создать место для репозитория на сервере.

Нам нужно создать каталог на резервном сервере для хранения репозитория. Исторически сервисы, обслуживаемые сервером, располагались в каталоге «/srv». Итак, мы разместим наш репозиторий там.

На резервном сервере введите эту команду. Вы можете назвать директорию репозитория как угодно. Мы используем название «рестик» для простоты.

sudo mkdir /srv/restic

Нам нужно убедиться, что этот каталог доступен человеку, который будет заниматься резервным копированием. Если бы это было несколько человек, имело бы смысл создать группу пользователей и предоставить группе доступ к каталогу.

sudo chown dave:dave /srv/restic

Давайте проверим настройки в каталоге:

ls -hl /srv

Теперь мы можем перейти на клиентскую машину и создать оттуда репозиторий на сервере. Замените имя вашего пользователя, имя сервера резервного копирования и имя каталога репозитория, чтобы они соответствовали вашему выбору. Вы можете использовать IP-адрес резервного сервера, если хотите.

Мы используем параметр -r (репозиторий), чтобы указать путь к репозиторию, который мы собираемся создать. Команда restic init инициализирует репозиторий.

restic -r sftp:dave@backup-box.local:/srv/restic init

Вам будет предложено ввести пароль для учетной записи пользователя на резервном сервере. Если вы настроили SSH-ключи между сервером и клиентом, вам не нужно выполнять этот шаг.

Вас также попросят ввести пароль репозитория, а затем вас попросят подтвердить его. Этот пароль необходимо использовать для взаимодействия с репозиторием в будущем. Не теряйте его! Вы не сможете создать резервную копию или восстановить данные, если потеряете пароль.

Создание и инициализация репозитория занимает всего несколько минут.

Создание резервной копии

Создать резервную копию очень просто. Мы используем команду backup с restic, сообщаем, что мы хотим сделать резервную копию и в какой репозиторий отправить резервную копию.

restic backup Documents/kernel/ -r sftp:dave@backup-box.local:/srv/restic

Вам необходимо указать пароль пользователя и пароль для репозитория. Во время резервного копирования отображаются имена копируемых файлов, а также статистика, показывающая, сколько файлов будет скопировано в целом, сколько уже скопировано и какой процент резервного копирования завершен. Снимки шифруются с использованием передового стандарта шифрования AES-256.

Поскольку это была первая резервная копия в этом репозитории, все резервные копии файлов были новыми. Мы говорили, что restic работает быстро — более 70 000 файлов были заархивированы за 23 секунды. Это весь исходный код ядра Linux.

На другой тестовой машине я за полтора часа сделал резервную копию более 350 000 файлов на сумму более 170 ГиБ.

Я создал новый файл на клиенте в исходном каталоге и запустил еще одну резервную копию. Команда та же, что и раньше.

restic backup Documents/kernel/ -r sftp:dave@backup-box.local:/srv/restic

Исходное дерево каталогов было просканировано на наличие изменений, обнаружен новый файл и создана его резервная копия. Это второе крошечное резервное копирование заняло три секунды, включая сканирование других файлов на наличие изменений.

Давайте взглянем на два снимка, которые у нас есть в репозитории. Остальной командой для этого является snapshots.

restic -r sftp:dave@backup-box.local:/srv/restic snapshots

Каждому снимку был присвоен шестнадцатеричный идентификатор в качестве уникального идентификатора. Отображаются дата и время создания каждого снимка. Также отображается имя компьютера, с которого была сделана резервная копия, и путь к данным, для которых была сделана резервная копия.

Затем я создал второй новый файл и создал еще одну резервную копию. Опять же, командная строка такая же, как и раньше.

Как и в случае с нашей предыдущей резервной копией пополнения, это крошечное обновление заняло три секунды.

К настоящему времени вы, вероятно, устали вводить пароль репозитория. Мы можем решить эту проблему, прежде чем использовать команду snapshots для просмотра нашей коллекции из трех снимков. Откройте редактор и введите в нем пароль репозитория, затем нажмите «Enter», чтобы начать новую строку. Сохраните файл как «.rest_pass» в своем домашнем каталоге.

Чтобы убедиться, что никто другой не увидит пароль, измените биты режима доступа к файлу с помощью chmod :

chmod 600 .rest_pass

Это означает, что никто, кроме вас, не может получить доступ к файлу.

Теперь мы можем передать это в остальную командную строку, используя параметр -p (файл паролей). Если вы также настроили ключи SSH между клиентом и сервером, вам также не нужно будет вводить пароль учетной записи пользователя. Вы можете легко автоматизировать резервное копирование с помощью cron после того, как из процесса будет исключено вмешательство человека.

restic snapshots -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass

Нас больше не просят ввести пароль репозитория, и это здорово. Нам не нужно его запоминать, и мы не можем ошибиться.

Работа со снимками

Команда restic diff позволяет увидеть различия между любыми двумя снимками. Используйте уникальные идентификаторы двух снимков, которые вы хотите сравнить. Вы можете увидеть идентификаторы моментальных снимков при использовании команды restic snapshot.

restic diff -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass 8f98cd29 8700e4bf

Различия между снимками отображаются в виде столбцов статистики.

Команда restic check выполняет проверку всех снимков в репозитории.

restic check -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass

Чтобы удалить снимок, вы должны указать Restic забыть его и обрезать его. Вы должны использовать уникальный идентификатор моментального снимка, чтобы определить, какой снимок следует удалить.

restic forget --prune -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass e506e089

Восстановление данных

Когда придет время восстановить данные из ваших резервных копий, это так же просто, как создать резервную копию. Вам нужно указать, какой снимок вы собираетесь восстановить. Вы можете использовать уникальный идентификатор моментального снимка или использовать метку latest, чтобы использовать самый новый снимок в репозитории.

Вам также необходимо указать каталог для копирования восстановленных данных с помощью параметра target .

restic restore latest --target ~/restored-data -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass

Восстановление выполняется так же быстро, как и резервное копирование. Проверяя целевой каталог, мы видим, что дерево каталогов и файлы были восстановлены для нас.

ls

Делайте резервные копии, спите спокойно

Потеря данных — серьезная проблема. Надежное решение для резервного копирования означает, что вам не о чем беспокоиться. С restic вы можете автоматизировать резервное копирование в локальные и облачные репозитории и спать спокойно.