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 в локальное или удаленное место. Хранение резервных копий за пределами сайта или в облачном хранилище защищает от локальных катастроф и обеспечивает резервирование.
Регулярное тестирование и проверка резервных копий гарантирует защиту данных при восстановлении. Следование лучшим практикам в области безопасности, проверки и мониторинга помогает поддерживать надежное резервное копирование.