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

Резервное копирование и восстановление файлов с помощью Borg в Linux

Учебное пособие по резервному копированию боргов

В Linux существует несколько инструментов резервного копирования, обеспечивающих функции резервного копирования на уровне системы, а также резервного копирования пользовательских данных. В этой подробной статье мы рассмотрим, что такое BorgBackup и как резервное копирование и восстановление файлов с помощью Borg в Linux и Unix-подобных системах.

1. Введение

Когда я имею дело с большим количеством данных в своей работе, мне в первую очередь приходят в голову очевидные вопросы: 1. Что, если я потеряю свои данные? 2. Насколько хорошо мои данные защищены?

Тот же сценарий будет применен и к персональной машине. Вы всегда должны создавать резервные копии своих данных в зависимости от их важности и защищать свои данные от несанкционированного доступа.

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

2. Что такое Борг?

BorgBackup, сокращенно borg, — это инструмент резервного копирования, созданный для обеспечения эффективного способа резервного копирования ваших данных с использованием метода дедупликации.

Некоторые уникальные особенности борга перечислены ниже.

  • Дедупликация. Метод дедупликации сохраняет только инкрементальные копии данных, что идеально подходит для ежедневного резервного копирования.
  • Кроссплатформенность. Borg можно установить и использовать в Linux, Mac OS X и FreeBSD.
  • Безопасность – поддерживается шифрование данных с использованием шифрования AES (256 бит). Для проверки подлинности используется HMAC-SHA256.
  • Сжатие. Данные можно сжимать следующими методами сжатия:

    • LZ4 -> Супербыстрый, с низким уровнем сжатия.
    • ZSTD -> от высокой скорости и низкой степени сжатия до низкой скорости и высокой степени сжатия.
    • ZLIB -> Средняя скорость, среднее сжатие.
    • LZMA -> Низкая скорость, высокая степень сжатия.
  • Удаленное резервное копирование. Резервное копирование данных можно выполнять на удаленных компьютерах по протоколу SSH.

3. Установите Borg в Linux

Borg доступен в репозиториях по умолчанию большинства дистрибутивов Linux. Таким образом, его можно установить с помощью менеджера пакетов конкретного дистрибутива.

Чтобы установить borg в Alpine Linux, выполните следующую команду:

sudo apk add borgbackup

Чтобы установить borg в Arch Linux и его вариантах, таких как EndeavourOS и Manjaro Linux, выполните следующую команду:

sudo pacman -S borg

Установите borg в дистрибутив на базе Debian/Ubuntu:

sudo apt install borgbackup -y

Установите borg в Fedora, RHEL, CentOS, AlmaLinux и Rocky Linux:

sudo dnf install borgbackup -y

Установите Borg в openSUSE:

sudo zypper install borgbackup -y

Поскольку borg написан на Python, вы можете использовать менеджер пакетов Python PiP для установки borg. В зависимости от установленной версии pip вы можете запустить любую из следующих команд.

pip install borgbackup

Или,

pip3 install borgbackup

После установки вы можете проверить установку Borg, запустив команды версии и справки:

borg --version
borg --help

Отобразить версию борга и раздел справки.

4. Сделайте первую резервную копию с помощью Borg.

Прежде чем создавать первую резервную копию, вам необходимо понять два важных термина.

  • Архивы. Резервная копия (снимки) ваших данных будет называться архивом.
  • Репозитории – каталоги в вашей локальной или удаленной файловой системе, в которых хранятся архивы.

Сначала инициализируйте репозиторий (каталог), в котором будут храниться архивы.

У меня есть список файлов в каталоге с именем "source", и я создал новый каталог с именем "backup", который будет служить хранилищем для хранения архивов.

Каталог резервного копирования

5. Инициализировать репозиторий

Запустите команду borg init, чтобы инициализировать каталог резервной копии. Каталог резервной копии может находиться на локальном или удаленном компьютере. В моем случае я инициализирую каталог (т. е. резервную копию), который уже создал.

borg init --encryption=none /home/karthick/borg/backup
borg init --encryption=repokey /home/karthick/borg/backup
borg init --encryption=keyfile /home/karthick/borg/backup

При инициализации репозитория вы можете выбрать тип шифрования. Если вы используете тип шифрования Нет, шифрование применяться не будет. Когда вы используете "repokey" и "keyfile" в качестве типов шифрования, для шифрования используется AES-CTR-256.

Выберите любой тип шифрования и выполните команду init. В моем случае я выбираю тип шифрования нет в демонстрационных целях.

6. Резервное копирование файлов с помощью Borg

6.1. Создать первую резервную копию

После инициализации репозитория вы можете создавать резервные архивы, выполнив следующую команду:

borg create --stats --progress /home/karthick/borg/backup::25-11-2021 /home/karthick/borg/source/

Здесь я указываю имя архива в формате даты "25-11-2021", имитируя ежедневное резервное копирование. Без флагов --stats и --progress вывод команды create будет тихим.

Создать архив Боргов

6.2. Отображение файлов при создании резервных копий

Вы также можете объединить флаги --list и -v для отображения списка файлов в архиве при запуске команды borg create.

borg create --list -v /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/

Создать команду — список и подробный список

6.3. Создание сжатых резервных копий

По умолчанию borg использует алгоритм сжатия lz4. Алгоритм сжатия lz4 очень быстр и имеет низкую степень сжатия. Если вы хотите использовать другой алгоритм сжатия, вы можете использовать флаг --compression и передать тип вместе с уровнем сжатия.

Например, если я хочу использовать алгоритм zstd, моя команда будет следующей.

borg create --compression zstd,1 /home/karthick/borg/backup/::27-11-2021 /home/karthick/borg/source/

Вы можете ознакомиться с различными алгоритмами сжатия и их уровнем в официальной документации Borg.

6.4. Получить информацию из архива

Вы можете использовать команду info, чтобы получить информацию о конкретном архиве.

borg info /home/karthick/borg/backup/::25-11-2021

Посмотреть информацию об архиве Боргов

7. Список резервных копий

Используя команду borg list, вы можете запросить свой репозиторий, чтобы найти список архивов и файлы, находящиеся внутри архивов.

Чтобы получить только список архивов, выполните следующую команду.

borg list /home/karthick/borg/backup

Пример вывода:

25-11-2021 Thu, 2021-11-25 13:16:53 [653d952301fc70ab9f2f74794361359144e05f5534e668ef4a4957d2c7f67937]
26-11-2021 Thu, 2021-11-25 13:19:51 [473bbe30fbe8597b63910310d567e69b501b2fb7127f04a78da76ab59d90114f]
27-11-2021 Thu, 2021-11-25 13:20:01 [0e6813f1a05246d43d196de9d28034d0397b4ae50cd20ee50163e347efee3e2a]

Вы также можете использовать флаг --json, который предоставит дополнительную информацию о репозитории и списке архивов в формате json.

borg list --json /home/karthick/borg/backup

Список резервных копий Borg в формате JSON

7.1. Список файлов в архивах

Чтобы получить список файлов внутри архива, выполните следующую команду. Здесь я размещаю файлы из архива "25-11-2021".

borg list /home/karthick/borg/backup::25-11-2021

Пример вывода:

drwxrwxr-x karthick karthick 0 Thu, 2021-11-25 12:48:58 home/karthick/borg/source
-rw-r--r-- karthick karthick 807 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/project_profile.txt
-rw------- karthick karthick 2301 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/hist.txt
-rw-r--r-- karthick karthick 220 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/external.txt
-rw-r--r-- karthick karthick 3895 Mon, 2021-11-22 13:35:51 home/karthick/borg/source/config.txt

Вы также можете использовать флаг --json-lines для вывода содержимого архива в формате JSON.

Вывод в формате json

7.2. Исключить файлы и каталоги из резервной копии

Вы можете исключить файлы и каталоги, используя флаг -e или --exclude.

borg list /home/karthick/borg/backup::25-11-2021 --exclude "hist"

Исключить файлы из резервной копии

8. Найдите разницу между архивами

Вы можете использовать команду diff для сравнения двух архивов.

Я создаю новый файл с именем datafile.txt в каталоге source. Я также создал еще один архив под названием 28-11-2021.

Теперь я могу сравнить новый и старый архив, как показано ниже:

borg diff /home/karthick/borg/backup/::27-11-2021 28-11-2021
added 2.89 kB home/karthick/borg/source/datafile.txt

Команда сравнения боргов

9. Переименуйте архивы

Если архив создан и вы хотите его переименовать, вы можете сделать это с помощью команды borg rename.

Допустим, если я хочу переименовать архив "27-11-2021" в "29-11-2021", я могу сделать это, выполнив следующую команду.

borg rename /home/karthick/borg/backup/::27-11-2021 29-11-2021

Переименование архива

10. Восстановить файлы с помощью borg (Извлечь данные из архива)

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

Запустите следующую команду, чтобы извлечь архив в текущий рабочий каталог. С добавлением флагов -v и --list вы увидите список извлеченных файлов.

borg extract -v --list backup/::25-11-2021

Извлечь архив боргов

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

borg extract --dry-run -v --list backup/::25-11-2021

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

borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/

10.1. Исключить файлы из восстановления

Вы также можете добавить --exclude, чтобы исключить файлы при извлечении каталога. Здесь я извлекаю все файлы, за исключением файлов с his.

borg extract -v --list backup/::25-11-2021 home/karthick/borg/source/ --exclude "hist"

Исключение файлов

11. Монтирование и размонтирование репозитория и архивов.

Вы можете смонтировать репозиторий или конкретный архив как файловую систему Fuse. После этого вы сможете восстановить файлы, используя смонтированный архив.

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

mkdir /tmp/borg/
borg mount /home/karthick/borg/backup/ /tmp/borg/
ls -l /tmp/borg/

Пример вывода:

drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 25-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 26-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 27-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:31 28-11-2021
drwxr-xr-x 1 karthick karthick 0 Nov 25 16:32 29-11-2021

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

Чтобы смонтировать определенные архивы, просто добавьте имя архива вместе с репозиторием.

borg mount /home/karthick/borg/backup/::25-11-2021 /tmp/borg/

Чтобы отключить смонтированный репозиторий или архивы, используйте команду borg umount.

borg umount /tmp/borg
ls -l /tmp/borg

12. Обрезать архивы

Команда borg prune будет очень полезна, когда вы автоматизируете резервное копирование и просто хотите сохранить только определенные копии и очистить оставшиеся копии.

Параметры команды обрезки боргов

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

borg prune -v --list --keep-weekly=2 /home/karthick/borg/backup/

Вы также можете применить вышеуказанное условие только к определенным архивам. Например, предположим, что у меня в репозитории 10 архивов, и я хочу применить правило хранения для archive7, тогда я могу использовать флаг --prefix, чтобы установить условие.

borg prune -v --list --keep-weekly=2 --prefix='{archive name}' /home/karthick/borg/backup/

Прежде чем запускать команду prune, выполните пробный прогон, используя флаг --dry-run.

13. Удалить репозиторий и архив

Удалить архив или весь репозиторий можно с помощью команды borg delete.

Чтобы удалить один архив, вам необходимо указать имя архива.

borg delete /home/karthick/borg/backup/::26-11-2021

Удалить один архив

Чтобы удалить весь архив, просто укажите путь к хранилищу. При удалении всего каталога вам будет предложено предоставить подтверждение.

borg delete /home/karthick/borg/backup/

Удалить репозиторий

14. Измените ключевую фразу-пароль.

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

borg init --encryption=repokey /home/karthick/borg/bkup/

Парольная фраза

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

Список репозиториев

Теперь предположим, что вы хотите изменить парольную фразу, тогда вы можете сделать это с помощью команды borgchange-passphrase.

borg key change-passphrase -v /home/karthick/borg/bkup

Изменить парольную фразу

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

BORG_PASSPHRASE="old password" BORG_NEW_PASSPHRASE="new password" borg key change-passphrase /home/karthick/borg/bkup

15. Ключ экспорта и импорта

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

Чтобы экспортировать ключ, выполните следующую команду:

borg key export bkup/ ./key
cat ./key

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

borg key import bkup/ ./key

Ключевой экспорт и импорт

16. Работа с удаленными репозиториями

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

Синтаксис:

borg init user@hostname:/path/to/repo

Пример:

borg init karthick@ostechnix:/home/karthick/borg/bkup

Вы можете выполнять все виды аналогичных операций, которые можно выполнять с локальным резервным копированием. Например, для восстановления резервной копии вы можете использовать extract, а также команду mount для монтирования удаленного репозитория.

Здесь, указывая на удаленный каталог, вы должны указать протокол ssh как «ssh://username@hostname:port/path/to/repo».

borg mount ssh://karthick@ostechnix:2222/home/karthick/borg/bkup /tmp/borg
borg extract ssh://karthick@ostechnix:2222/home/karthick/borg/bkup

17. Настольные клиенты Borg с графическим интерфейсом

Поскольку BorgBackup — это исключительно инструмент командной строки, запомнить все команды практически невозможно. Некоторые из вас могут предпочесть красивое графическое приложение, позволяющее выполнять резервное копирование данных через графический интерфейс. Не волнуйтесь!

Vorta — настольный клиент с графическим интерфейсом для BorgBackup. Используя Vorta, вы можете легко интегрировать приложение Borg в свою любимую среду рабочего стола. Нет необходимости запоминать команды. Все можно сделать через простой графический интерфейс!

Более подробную информацию о том, как установить и использовать Vorta, можно найти в следующем руководстве.

  • Vorta – графический интерфейс для BorgBackup

18. Заключение

В этой статье мы увидели, как использовать borg для резервного копирования и восстановления данных в Linux. У Borg очень много функций, которые вы сможете понять, протестировав этот инструмент. Хорошей альтернативой для borg будет Timeshift для резервного копирования на уровне системы и rsync для резервного копирования пользовательских файлов и каталогов.

Ресурс:

  • Веб-сайт BorgBackup

Руководства по резервному копированию и синхронизации Linux:

  • Как сделать резервную копию всей вашей системы Linux с помощью Rsync
  • Как создать резервную копию файлов и каталогов с помощью Rsync в Linux
  • Как сделать резервную копию и восстановить систему Linux с помощью Timeshift
  • Как создать резервную копию и восстановить файлы с помощью Deja Dup в Linux
  • Как настроить сервер резервного копирования с помощью Rsnapshot
  • Как синхронизировать файлы с Unison в Linux
  • Как синхронизировать локальные и удаленные каталоги в Linux
  • Как синхронизировать файлы и каталоги с помощью Zaloha.sh
  • CYA — утилита для создания снимков и восстановления системы для Linux
  • Restic – быстрое, безопасное и эффективное приложение для резервного копирования

Статьи по данной тематике