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

Duplicity — это мощный инструмент резервного копирования с открытым исходным кодом, который позволяет выполнять шифрованные и инкрементные резервные копии. Он поддерживает различные бэкэнды для хранения резервных данных, включая локальные или удаленные файловые системы, FTP, SSH, WebDAV и облачные сервисы хранения. Duplicity использует GnuPG для шифрования и подписи архивов резервных копий.

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

Установка Duplicity

Duplicity доступен в стандартных репозиториях большинства дистрибутивов Linux.

В Debian/Ubuntu

$ sudo apt update
$ sudo apt install duplicity

На CentOS/RHEL

$ sudo yum install epel-release
$ sudo yum update
$ sudo yum install duplicity

На Arch Linux

$ sudo pacman -S duplicity

На Fedora

$ sudo dnf install duplicity

Для других дистрибутивов Linux обратитесь к менеджеру пакетов.

После установки убедитесь, что Duplicity доступен, проверив версию:

$ duplicity --version

Генерация ключей GPG

Duplicity использует ключи GnuPG для шифрования и/или подписи архивов резервных копий. Для этого нам необходимо сгенерировать пару ключей.

Импортируйте пакет инструментов GPG, если он еще не установлен:

$ sudo apt install gnupg

Сгенерируйте новую пару ключей с шифрованием RSA.

$ gpg --gen-key

Выберите тип ключа «RSA и RSA» с размером 4096 бит. При желании задайте срок действия.

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

Перечислите ключи, чтобы найти идентификатор:

$ gpg --list-keys

Экспортируйте открытый ключ для резервного копирования. Замените идентификатор соответствующим образом:

$ gpg -a --export 1234ABCD > public.gpg

Открытый ключ необходимо передать на любой удаленный бэкэнд, который вы собираетесь использовать, например SSH или облачное хранилище. Закрытый ключ должен храниться в безопасном месте на локальной системе, на которой выполняется резервное копирование.

Настройка дублирования

Duplicity поддерживает множество бэкэндов для хранения данных, таких как локальный, SSH, FTP, WebDAV и т. д. Мы рассмотрим настройку некоторых распространенных бэкэндов:

Локальная файловая система

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

file:///home/user/backups

SSH

Резервное копирование на удаленную систему по SSH:

ssh://user@host//path/to/backup

Это предполагает, что между системами настроен доступ по SSH.

Amazon S3

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

s3://s3-bucket-name[/prefix] 

Учетные данные S3 можно указать в конфигурационном файле ~/.boto или в переменных окружения.

См. Бэкэнд Duplicity S3 документация для получения подробной информации.

Облачное хранилище Google

Для резервного копирования в облачное хранилище Google:

gs://cloud-storage-bucket[/prefix]

Аутентификация может осуществляться различными способами, включая файлы учетных записей служб, файлы ADC JSON или переменные окружения.

См. Бэкэнд GCS раздел в документации для получения более подробной информации.

Swift

Чтобы создать резервную копию в контейнере OpenStack Swift:

swift://container_name[/prefix]

Аутентификация осуществляется через переменные окружения. См. Swift Backend документация.

WebDAV

Чтобы использовать сервер WebDAV в качестве бэкэнда:

webdav[s]://hostname[:port]/path

При необходимости Duplicity запросит имя пользователя/пароль.

См. Бэкэнд WebDAV подробнее.

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

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

Настроив URL-адрес бэкэнда, мы можем создать полную резервную копию.

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

export PASSPHRASE=your_passphrase 

Затем выполните полное резервное копирование:

$ duplicity /path/to/source dir file:///path/to/destination

Это приведет к рекурсивному резервному копированию /path/to/source в локальный каталог /path/to/destination.

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

$ duplicity /path/to/source ssh://user@host//backup/path

Для резервного копирования в облачное хранилище:

$ duplicity /local/source s3://s3-bucket[/prefix]

Duplicity запросит все необходимые учетные данные, например пароль SSH или секретные ключи AWS. Резервная копия будет зашифрована и сохранена в месте назначения.

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

$ duplicity include /path/to/folders1 include /path/to/folders2 /path/to/source file:////path/to/destination

В результате будут созданы резервные копии только указанных папок из источника.

После первоначального полного резервного копирования последующие резервные копии будут инкрементными. Это экономит время и место в хранилище. Дублирование использует librsync для эффективного определения измененного содержимого.

Чтобы принудительно выполнить полное резервное копирование вместо инкрементного, используйте параметр --full-if-older-than опцию:

$ duplicity --full-if-older-than 60D /path/to/source ssh://user@host//path/to/backup

Это позволит выполнить полное резервное копирование, если последняя полная резервная копия старше 60 дней.

Планирование резервного копирования с помощью Cron

Мы можем автоматизировать резервное копирование Duplicity с помощью заданий Cron.

Откройте crontab для редактирования:

$ crontab -e

Добавьте расписание cron, например:

0 1 * * * /usr/bin/duplicity /path/to/source ssh://user@host//backup/path

Это будет запускать задание резервного копирования каждый день в час ночи.

Для еженедельного резервного копирования:

0 1 * * 0 /usr/bin/duplicity /path/to/source ssh://user@host//backup/path

Это будет запускать резервное копирование каждое воскресенье в час ночи.

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

Для более детального контроля можно запускать отдельные полные и инкрементные задания:

0 1 * * * /usr/bin/duplicity --full-if-older-than 30D /path/to/source ssh://user@host//path/to/full/backup
0 */4 * * * /usr/bin/duplicity /path/to/source ssh://user@host//path/to/incr/backup 

В этом случае полное резервное копирование будет выполняться 1-го числа месяца, а инкрементное — каждые 4 часа.

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

Восстановление резервных копий

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

$ duplicity restore ssh://user@host//backup/path /local/restore/path

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

Чтобы восстановить более раннюю версию с определенной даты:

$ duplicity restore --time 2020-01-01T12:30:00 ssh://user@host//backup/path /local/restore/path

Список всех сохраненных резервных версий:

$ duplicity collection-status ssh://user@host//backup/path

Удаление старых резервных копий:

$ duplicity remove-older-than 6M --force ssh://user@host//backup/path

Это удалит все версии резервных копий старше 6 месяцев.

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

Duplicity на Mac с помощью Homebrew

На MacOS Duplicity можно установить через Homebrew:

$ brew install duplicity

Использование остается таким же, как и в Linux:

$ duplicity /path/to/source /path/to/destination

Запланируйте резервное копирование cron аналогичным образом, используя родной crontab:

$ crontab -e

Дублирование в Windows

Duplicity можно установить на Windows с помощью программы Cygwin Среда Linux.

Первый установите Cygwin с пакетами rsync и python.

Затем установите Duplicity с помощью pip:

C:\> pip install duplicity

Теперь вы можете использовать Duplicity для резервного копирования файлов локально или на удаленные общие ресурсы Windows:

C:\> duplicity C:\Users\user\Documents E:\Backups

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

Порт Duplicity для Windows под названием cwDup также доступен, хотя и с урезанной функциональностью.

Лучшие практики по устранению дублирования

Вот несколько лучших практик, которым следует следовать при использовании Duplicity:

  • Резервное копирование в удаленное или автономное хранилище для защиты от вредоносных программ, программ-вымогателей и т. д.
  • Шифруйте и подписывайте резервные копии для обеспечения безопасности. Защитите закрытый ключ GPG парольной фразой.
  • Проверяйте резервные копии, периодически выполняя восстановление.
  • Сохраняйте несколько версий, но удаляйте старые резервные копии для экономии места.
  • Храните метаданные, такие как ключи GPG и конфигурации, отдельно от данных резервного копирования.
  • Проверяйте работу резервных копий, прежде чем полагаться на них при восстановлении.
  • Автоматизируйте резервное копирование по расписанию, но также создавайте резервные копии вручную после важных изменений.
  • Отправляйте журналы/сообщения о резервном копировании, чтобы отслеживать состояние задания.
  • Разделение больших томов на несколько дисковых накопителей для повышения пропускной способности.
  • Делайте снимки резервных копий, чтобы избежать резервного копирования открытых файлов в нестабильном состоянии.
  • Для обеспечения максимальной безопасности изолируйте резервные копии от сети с помощью воздушного зазора.

Заключение

Duplicity — это надежное решение с открытым исходным кодом для шифрованного инкрементного резервного копирования. Оно обеспечивает большую гибкость в настройках внутреннего хранилища. Использование шифрования GPG обеспечивает безопасную передачу и хранение архивов резервных копий.

С помощью этого руководства вы теперь сможете настроить автоматические задания резервного копирования Duplicity в локальное или удаленное место. Хранение резервных копий за пределами сайта или в облачном хранилище защищает от локальных катастроф и обеспечивает резервирование.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *