Backup linux сервера с помощью Duplicity
Существует много инструментов для выполнения архивации данных на линуксе. Сегодня хочу рассмотреть программу duplicity, с помощью которой можно выполнить полный бэкап linux сервера. Она проста в использовании, но при этом очень удобна и функциональна.
Введение
Обычно я использую для бэкапов rsync. Это гибкое и удобное средство, но в некоторых случаях им неудобно пользоваться. У него есть как плюсы, так и минусы. Как я использую и настраиваю rsync для бэкапа, я рассказал в отдельной статье.
Если вы хотите получить компактный бэкап всей системы, или хранить на удаленном сервере бэкап с множеством файлов и директорий, вам придется как-то упаковывать файлы в архивы и передавать их.
Кучу мелких файлов в сыром виде передавать медленно и неудобно.
Я часто использую для хранения бэкапов Yandex.Disk. Готовый кейс по настройке бэкапа сайта на яндекс.диск я уже приводил ранее. Диск монтируется по webdav и работает достаточно медленно. Передавать кучу мелких файлов по нему не удобно. Я решил посмотреть, что есть еще из средств бэкапа. Параллельно хотел рассмотреть вопрос удобного бэкапа всего сервера.
Нашел любопытную программу duplicity. Раньше слышал о ней, но руки не доходили проверить самому. Теперь дошли, перейдем к настройке полного бэкапа сервера.
Установка duplicity на Centos
С установкой все просто:
# yum install -y duplicity
Ставится из репозитория epel. Если у вас не ставится, проверьте, подключены ли репозитории.
Выполняем полный бэкап linux сервера
Чтобы полностью забэкапить сервер, необходимо использовать duplicity со следующими параметрами:
duplicity full –exclude=/proc –exclude=/sys –exclude=/dev –exclude=/proc –exclude=/sys –exclude=/mnt –exclude=/media –exclude=/tmp –exclude=/var/spool –exclude=/var/cache –exclude=/var/tmp –exclude=/swap / file:///mnt/yadisk –no-encryption
full | Указывает, что мы делаем полный бэкап, можно делать и инкрементный. |
—exclude | Параметр задает списки исключений, сверьте со своим сервером и добавьте необходимые для исключения папки. |
/ | Источник бэкапа. В данном случае корень диска. |
file:///mnt/yadisk | Локальный путь к папке /mnt/yadisk, куда делаем бэкап. У меня в эту папку смонтирован яндекс.диск. |
—no-encryption | Параметр указывает на то, что шифрование не используется. |
После выполнения бэкапа получите следующую информацию:
После полного бэкапа, можно выполнять инкрементный бэкап. Для этого в приведенной выше команды, вместо параметра full нужно использовать incremental.
Восстановление из бэкапа
Для того, чтобы извлечь содержимое бэкапа в папку /restore, воспользуемся командой:
duplicity –no-encryption –file-to-restore / file:///mnt/yadisk /restore
Если вам нужно восстановить какой-то отдельный файл или папку, укажите эту папку или файл следующим образом:
duplicity –no-encryption –file-to-restore var/log file:///mnt/yadisk /restore/var/log duplicity –no-encryption –file-to-restore var/log/messages file:///mnt/yadisk /restore/var/log/messages
Во время восстановления каталога, папки создавать вручную не надо. Если восстанавливаете файл, то полный путь к конечной директории должен существовать.
Проверка и удаление бэкапов duplicity
Приведу еще несколько полезных команд для проверки бэкапов.
Посмотреть информацию о бэкапах в заданном каталоге:
duplicity collection-status –no-encryption file:///mnt/yadisk
Проверить содержимое бэкапа и сравнить с оригиналом:
duplicity verify –no-encryption file:///mnt/yadisk /
В данном случае не очень информативный вывод будет, так как будут отражены все файлы из исключенных директорий, а их очень много.
Посмотреть список файлов в архиве:
duplicity list-current-files –no-encryption file:///mnt/yadisk/duplicity
Необходимым функционалом является очистка старых бэкапов. Для того, чтобы удалить все бэкапы старше одного месяца, нужно воспользоваться командой:
duplicity –no-encryption remove-older-than 1M file:///mnt/yadisk
Чтобы удалить все бэкапы, кроме последнего, подойдет команда:
duplicity –no-encryption remove-all-but-n-full 1 –force file:///mnt/yadisk
На этом все, основные моменты я рассказал. Для бэкапа сервера или отдельных папок этого достаточно.
Заключение
Я рассмотрел малую часть функционала дуплисити. Большим ее плюсом является поддержка всевозможных удаленных хранилищ для бэкапа: ftp, ssh, различные облачные хранилища и другое. Хорошим преимуществом так же является возможность шифровать свои бэкапы. Мне пока нет надобности все это использовать, поэтому я рассмотрел только свой частный случай.
Помогла статья? Есть возможность отблагодарить автора
Источник: https://serveradmin.ru/backup-linux-servera-s-pomoshhyu-duplicity/
Установка и настройка Duplicity для создания бекапа на Ubuntu/Centos | Записки системного администратора
1.Установка Duplicity
Ubuntu
# apt-get update && apt-get install duplicity |
Centos (предварительно подключаем EPEL-репозитарий)
# yum update && yum install epel-release && yum install duplicity |
Если необходимо использовать шифрование/дешифрование, то генерируем GnuPG-ключи
(1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) |
Тип ключа – вариант 1
Размер ключа – 2048
Как долго ключи будет валидны – 0(навсегда)
Вводим имя и Email
Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? oYou need a Passphrase to protect your secret key. |
Если необходимо,то задаем пароль-фразу
Для получения энтропии необходимой для генерации ключей в другом терминале на сервере выполняем какие-либо задачи или команды
Просмотр списка ключей
/root/.gnupg/pubring.gpg————————pub 2048R/73B39905 2015-09-26uid YourName YourSurname<\p>sub 2048R/A384982E 2015-09-26 |
Нас интересует ID публичного ключа – в данном случае
.
Он будет использоваться как аргумент при выполнении команды duplicity для шифрования файлов
Базовые команды для работы с duplicity
2.Создание бекапа
Cоздание бекапа,который будет храниться локально на том же сервере
Бекап ТОЛЬКО каталогов /etc и /var/log без шифрования – размер тома =1024Mb, который сохраняется в локальной папке backup-duplicity Размер тома определяет какого размера временный файл будет создавать duplicity в файловой системе(по умолчанию создает этот файл в /tmp или /usr/tmp).По умолчанию(если не указана опция full) duplicity создает инкрементный бекап, но при запуске впервые duplicity создаст полный бекап
# duplicity –no-encryption –volsize=1024 –include=/etc –include=/var/log –exclude=/** / file:///backup-duplicity |
Аналогично,но с шифрованием
# duplicity –encrypt-key=”73B39905″ –volsize=1024 –include=/etc –include=/var/log –exclude=/** / file:///backup-duplicity |
Я не использовал пароль-фразу при создании gpg-ключей.Если использовалась такая фраза, то
Выполняем команду
# PASSPHRASE=”YourPasshraseHere” duplicity –encrypt-key=”73B39905″ –volsize=1024 –include=/etc –include=/var/log –exclude=/** / file:///backup-duplicity |
При повторном выполнении этой же команды будет создан инкрементальный бекап
Бекап каталога /var/log исключая каталог /var/log/mysql
# duplicity –no-encryption –volsize=1024 –exclude=/var/log/mysql –include=/var/log/ –exclude=/** / file:///backup-duplicity |
Бекап всего каталога root за исключением папок /mnt, /proc, /tmp
# duplicity –no-encryption –volsize=1024 –exclude=/mnt –exclude=/proc –exclude=/tmp / file:///backup-duplicity |
Бекап на удаленный сервер по SFTP Для этого нужно доустановить пакет
Ubuntu
# apt-get install python-paramiko |
Centos
Пакет автоматически устанавливается при установке duplicity
А) подключение по паролю
# duplicity –no-encryption –volsize=1024 –include=/etc –exclude=/** / sftp://$SSHUSER:$SSHPASSWORD@$SSHSERVER:$SSHPORT/$DESTFOLDER |
# duplicity –no-encryption –volsize=1024 –include=/etc –exclude=/** / sftp://root:[email protected]:2222//backup/ |
Б) подключение по ключам
# duplicity –no-encryption –volsize=1024 –include=/etc –exclude=/** / sftp://$SSHUSER@$SSHSERVER:$SSHPORT/$DESTFOLDER |
# duplicity –no-encryption –volsize=1024 –include=/etc –exclude=/** / sftp://[email protected]:2222//backup/ |
Бекап на удаленный сервер по FTP Для этого нужно доустановить пакет
Ubuntu
# duplicity –no-encryption –volsize=1024 –include=/etc –exclude=/** /ftp://ftpuser:ftppassword@ftphost/backup/ |
# duplicity –no-encryption –volsize=1024 –include=/etc –exclude=/** / ftp://user1:[email protected]/backup/ |
3.Восстановление из бекапа
По умолчанию(если не используется опция)
duplicity не перезаписывает существующие файлы и каталоги, поэтому восстанавливать нужно либо во временную папку либо использовать опцию
для принудительной перезаписи уже существующих файлов/каталогов
Полное восстановление бекапа во временный каталог
# duplicity –no-encryption restore file:///backup-duplicity/ /duplicity-temp/ |
Проверяем
# find /duplicity-temp/etc/ -type f | wc -l |
# find /etc/ -type f | wc -l |
Восстановление одного файла
# duplicity –file-to-restore etc/mysql/my.cnf file:///backup-duplicity/ –no-encryption /duplicity-temp/my.cnf |
Проверка
# diff /etc/mysql/my.cnf /duplicity-temp/my.cnf |
Аналогично но восстановление файла, который был 3 дня назад
# duplicity –no-encryption -t 3D –file-to-restore etc/mysql/my.cnf file:///backup-duplicity/ /duplicity-temp/my.cnf |
Временные параметры
— секунды
– минуты
— часы
— дни
— недели
— месяцы
— годы
4.Другие полезные команды duplicity
просмотр списка файлов в последней резервной копии
# duplicity list-current-files file:///backup-duplicity |
при использовании шифрования
# duplicity list-current-files –encrypt-key=”73B39905″ file:///backup-duplicity |
Просмотр инфорамции о бекапе
# duplicity collection-status file:///backup-duplicity |
Проверка последней версии бекапа
# duplicity verify –no-encryption file:///backup-duplicity /etc/ |
при использовании шифрования
# duplicity verify –encrypt-key=”73B39905″ file:///backup-duplicity /etc/ |
Удаление бекапов старше 30 дней
# duplicity remove-older-than 30D –force file:///backup-duplicity/ |
5.Несколько скриптов с удаленной отливкой по SFTP, FTP, S3-Amazon
Создание бекапа без шифрования каталогов /etc и /var/www полного бекапа раз в 7 дней, в остальные дни –инкрементальный бекап. Удалять бекапы старше 30 дней, заливать бекапы по SFTP в каталог /backup в корне на удаленный сервер
# nano /root/duplicity-sftp.sh |
1234567891011121314151617181920212223 | #!/bin/bashSSHPORT=”2222″SSHUSER=”root”SSHPASSWORD=”123456789″SSHSERVER=”192.168.1.71″DESTFOLDER=”/backup”DAYS_FULL=7DAYS_STORE=30#Authentiffication via SSH-keysduplicity –full-if-older-than ${DAYS_FULL}D –no-encryption –volsize=1024 –include=/etc –include=/var/www –exclude=/** / sftp://$SSHUSER@$SSHSERVER:$SSHPORT/$DESTFOLDER# Remove backup older 30 daysduplicity remove-older-than ${DAYS_STORE}D –force sftp://$SSHUSER@$SSHSERVER:$SSHPORT/$DESTFOLDER#Authentification via password#duplicity –full-if-older-than ${DAYS_FULL}D –no-encryption –volsize=1024 –include=/etc –include=/var/www –exclude=/** / sftp://$SSHUSER:$SSHPASSWORD@$SSHSERVER:$SSHPORT/$DESTFOLDER# Remove backup older 30 days# duplicity remove-older-than ${DAYS_STORE}D –force sftp://$SSHUSER:$SSHPASSWORD@$SSHSERVER:$SSHPORT/$DESTFOLDER |
Аналогично, но заливка на удаленный сервер по FTP в каталог backup в домашний каталог пользователя user1
# nano /root/duplicity-ftp.sh |
#!/bin/bashFTPPORT=”21″FTPUSER=”user1″FTPPASSWORD=”123″FTPSERVER=”192.168.1.71″DESTFOLDER=”backup”DAYS_FULL=7DAYS_STORE=30#Authentification via passwordduplicity –full-if-older-than ${DAYS_FULL}D –no-encryption –volsize=1024 –include=/etc include=/var/www –exclude=/** / ftp://$FTPUSER:$FTPPASSWORD@$FTPSERVER:$FTPPORT/$DEST$#Remove backup older 30 daysduplicity remove-older-than ${DAYS_STORE}D –force ftp://$FTPUSER:$FTPPASSWORD@$FTPSERVER:$FTPPORT/$DESTFOLDER |
Аналогично,но заливка на S3 Amazon в бакет,указанный в скрипте Для этого нужно доустановить пакет
Ubuntu
# apt-get install python-boto |
# nano /root/duplicity-aws.sh |
123456789101112131415161718192021 | #!/bin/bash# The S3 destination followed by bucket nameDEST=”s3://s3.eu-central-1.amazonaws.com/your_backet_name/”DAYS_FULL=7DAYS_STORE=30# Export some ENV variables so you don't have to type anythingexport AWS_DEFAULT_REGION='your_region'export AWS_ACCESS_KEY_ID='your_access_key'export AWS_SECRET_ACCESS_KEY='your_secret_key'duplicity –full-if-older-than ${DAYS_FULL}D –no-encryption –volsize=1024 –include=/etc include=/var/www –exclude=/** / ${DEST}#Remove backup older 30 daysduplicity remove-older-than ${DAYS_STORE}D –force ${DEST}# Reset the ENV variables.unset AWS_DEFAULT_REGIONunset AWS_ACCESS_KEY_IDunset AWS_SECRET_ACCESS_KEY |
Источники:
1. https://duplicity.nongnu.org
2. https://tecmint.com/create-encrypted-linux-file-system-backups-using-duplicity/
3. https://linuxmd.
net/instruction/199-ustanovka-i-nastrojka-duplicity-na-debian-based-distributivakh-tutorial
4. https://wiki.russianfedora.pro/index.
php?title=%D0%90%D1%80%D1%85%D0%B8%D0%B2%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Duplicity
Источник: https://kamaok.org.ua/?p=1093
Duplicity – экстремально простой способ резервного копирования
Как гласит старинная шутка, системные администраторы делятся на две группы: те, которые не делают бэкапы, и те, которые уже делают бэкапы. Систем резеревного копирования существует великое множество, от простейшего самописного скрипта до огромных монстров ценой в “боинг”. Все системы нужны для разных целей и выполняют разные задачи.
Основная, самая известная и популярная система в мире unix и linux – это, безусловно, bacula. Умеет bacula очень много – сложные расписания и политики хранения, шифрование данных и клиент-серверного трафика, управление операциями “на ходу”, десятки способов упаковки и проверки данных.
Полный список возможностей bacula занимает несколько страниц мелкого текста. Основной минус бакулы находится ровно там, где находится ее плюс. Внедрение и настройка бакулы – это приключение, как минимум, на неделю. Документации очень много (но ее все равно не хватает).
Бакула состоит из 4 самостоятельных компонентов (director, storage, filedaemon, console), каждый из которых настраивается и живет отдельно. Все эти компоненты имеют сложные взаимоотношения и должны быть доступны друг другу напрямую, что тоже жизнь не облегчает.
Элементарный конфиг bacula легко может весить десятки килобайт (и bacula очень трепетно относится к опечаткам в конфиге – он в лучшем случае вообще не прочитается, а в худшем сервис упадет). В случае, если нужно делать резервные копии с одного-двух серверов – bacula – явный оверкилл.
Вместо сложного комбайна нужен простой и понятный молоток. И такой молоток есть – он называется duplicity.
Duplicity – это очень просто. Это одна-единственная команда, которая запускается на том сервере, откуда будут копироваться данные. Все, что она может:
- сделать резервную копию. Резервная копия пакуется в блоки (назывются тома), и, по желанию, шифруются. Резервная копия может быть или полной, или инкрементальной. Уровень определяется возрастом копии – если последняя полная копия старше определенного возраста – будет сделана полная, если нет – инкрементальная копия.
- отправить резервную копию на удаленный сервер. Удаленный сервер может быть rsync, ftp, scp, s3 (вариантов много). Можно хранить прямо в файловой системе. Устройства хранения (ленточные библиотеки, дисковые массивы) – не поддерживатюся.
- найти расходждения между каталогом и определенной версией бекапа. Полезно, чтобы понять, что изменилось с момента бэкапа.
- показать список файлов в бэкапе.
- восстановить файлы из бэкапа (или весь бэкап целиком).
- почистить удаленный сервер от старых бэкапов.
На этом функционал duplicity заканчивается. Ничего сложного, головоломного, неочевидного. Система, понятная, как кирпич.
Установка и настройка
Duplicty входит в пакет с одноименным названием, и устанавливается традиционно для вашей операционной системы:
#debian, ubuntu
apt-get install duplicity #centos, redhat, fedora
yum install duplicity
Теперь нужно решить, куда будут отправляться пакеты. Duplicty не может работать с удаленным сервером самостоятельно – в зависимости от типа удаленного сервера ему потребуется тот или иной пакет. Сам duplicity только “дирижирует процессом”. Самые ходовые типы серверов и пакеты:
- ftp, ftps (ftp over TLS): ncftp
- rsync: rsync
- s3 (aws S3, openstack swift, ceph object gateway, minio): boto
Если планируется шифровать и/или подписывать бэкап – нужно сгенерировать gpg-ключ. Шифровать бэкап рекомендуется, если нет доверия серверу хранения. Правило хорошего тона гласят, что доверия нет никогда и никому. Помните о том, что бэкап, по сути – отложеное по времени нарушение безопасности. Ключ генерируется вполне традиционым способом:
Параметры ключа (размер, алгоритм) менять не обязательно, они вполне разумны. После окончания генерации GPG вернет идентификатор ключа. Его так же можно посмотреть вот так:
gpg –list-keys /root/.gnupg/pubring.gpg
————————
pub 2048R/F6822D5F 2017-01-28
uid Paul I Rudnitskiy (bck server)
sub 2048R/292EB891 2017-01-28
ID нам чуть дальше пригодится, рекомендую его запомнить.
Так же очень рекомендуется сделать разеревную копию GPG-ключа. Если бэкап зашифрован – потеря ключа автоматически означает потерю возможности восстановить данные из бэкапа. Выгрузим ключ, чтобы сохранить его в надежное место:
gpg –export-secret-keys -a F6822D5F > backup.asc
Резервное копирование
Общий принцип – duplicity [args] {source} {destination}. Аргументов множество, ниже я приведу пример и распишу, что означает каждый. Проще всего сделать shell-скрипт с командой и типовыми аргументами, чтобы не вспоминать их каждый раз
duplicity –verbosity notice –encrypt-key “F6822D5F” –full-if-older-than 14D –num-retries 3 –asynchronous-upload –volsize 100 –archive-dir /var/tmp/.duplicity –log-file /var/log/duplicity.log –exclude “/var/lib/postgresql/9.5/main/archive” “/var/lib/postgresql/9.5/main/” “ftp://bckuser:[email protected]/pgsql”
На что обратить внимание:
- verbosity – уровень “говорливости” при работе. Рекомендуется info при отладке (показывает файлы и текущие операции) и notice в production (кратко сообщает о текущем этапе работы)
- encrypt-key – ID ключа для шифрования. Важен, если ключей несколько. Если шифровать не нужно – используйте аргумент –no-encryption. При шифровании gpg спросит пароль ключа шифрования. Побеждается или настройкой gpg-agent или созданием переменной PASSPHRASE с паролем.
- full-if-older-than – через срок после создания полной копии нужно сделать не инкрементальную, а снова полную копию. В данном примере – 14 дней.
- volsize – размер одного тома в мегабайтах. Каждый том пакуется и загружается на сервер отдельно, это отдельный файл.
- archive-dir – папка, где duplicity локально хранит метаданные (информацию о томах и их содержимом). Копия метаданных лежит на сервере. Если по какой-то причине метаданные пропадут – duplicity придется скачать копию метаданных с сервера перед началом бэкапа. Размер папки метаданных пропорционально зависит от количества файлов и количества бэкапов, так что стоит выделить ей побольше места.
- exclude – позволяет исключить папку из бэкапа. аргументов exclude может быть несколько.
- destination – последний аргумент, куда копируем данные. Задается в виде классического url. URL для копии в локальную файловую систему имеет вид file:///path/to/folder
Проверка состояния бэкапов на удаленном сервере:
duplicity collection-status “ftp://bckuser:[email protected]/pgsql” –archive-dir /var/tmp/.duplicity
Пример ответа:
NcFTP version is 3.2.5
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Sep 15 04:10:03 2017
Collection Status
—————–
Connecting with backend: FTPBackend
Archive dir: /var/tmp/.duplicity/c9edc22d8a99b972fdf4bd3cec26e19f Found 1 secondary backup chain.
Secondary chain 1 of 1:
————————-
Chain start time: Thu Aug 31 04:10:03 2017
Chain end time: Thu Sep 14 04:10:02 2017
Number of contained backup sets: 15
Total number of contained volumes: 252 Type of backup set: Time: Num volumes: Full Thu Aug 31 04:10:03 2017 137 Incremental Fri Sep 1 04:10:02 2017 6
—————————-CUT—————————————-
————————- Found primary backup chain with matching signature chain:
————————-
Chain start time: Fri Sep 15 04:10:03 2017
Chain end time: Fri Sep 29 04:10:03 2017
Number of contained backup sets: 15
Total number of contained volumes: 245 Type of backup set: Time: Num volumes: Full Fri Sep 15 04:10:03 2017 142 Incremental Sat Sep 16 04:10:02 2017 8
—————————-CUT—————————————- Incremental Fri Sep 29 04:10:03 2017 7
————————-
No orphaned or incomplete backup sets found.
Duplicity не позволяет помечать бэкап как устаревший автоматически (retention в терминологии “взрослых” систем). Чистить ненужные бэкапы придется в ручном режиме:
duplicity –verbosity notice
–archive-dir /var/tmp/.duplicity
–force
remove-all-but-n-full 4
“ftp://bckuser:[email protected]/pgsql”
Эта команда удалит все бэкапы старше 4 последних полных бэкапов. В примере выше мы делали полный бекап каждые 2 недели, то есть duplicity удалит бэкапы старше 2 месяцев (8 недель).
Если убрать ключ –force – duplicity найдет старые бэкапы, но не будет их удалять – только выведет на консоль.
Забывать о чистке не рекомендуется – место на сервере для резервных копий может неожиданно кончиться и оставить вас без свежих бэкапов. Выясняется это весьма болезненно.
Проверка и восстановление
Посмотрим файлы, которые у нас есть в бэкапе:
duplicity –archive-dir /var/tmp/.duplicity list-current-files “ftp://bckuser:[email protected]/pgsql”
Пример ответа:
NcFTP version is 3.2.5
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Sat Sep 29 04:10:03 2017
Mon Oct 2 04:10:02 2017 .
Mon Aug 29 21:07:04 2016 PG_VERSION
Mon Oct 2 04:10:02 2017 backup_label
———————–CUT———————————
Команда выше покажет состояние на момент последнего бэкапа. Чтобы получить информацию из более старых бэкапов, нужно использовать ключ -t. К примеру, -t6D вернет информацию о бэкапе, сделаном 6 дней назад.
Восстановление данных выглядит ровно так же, как бэкап, нужно просто поменять местами source (откуда брать данные) и destination:
duplicity –verbosity notice –encrypt-key “F6822D5F” –archive-dir /var/tmp/.duplicity –log-file /var/log/duplicity.log “ftp://bckuser:[email protected]/pgsql” “/var/lib/postgresql/9.5/main/”
На что обратить внимание:
- Если нужно восстановить бэкап на определенную дату – выручает ключ -t
- Для восстановления определенного файла нужно использовать ключ –file-to-restore. Таких ключей может быть несколько.
- Восстановление возможно только в совершенно пустую папку
- Для восстановления duplicity вытащит с сервера резервных копий весь полный бэкап и все инкрементальные бэкапы с момента полного до точки восстановления. Места уйдет много.
Источник: https://prudnitskiy.pro/2017/09/30/duplicity/
Duplicity. Linux. Резервное копирование на FTP-сервер –
Приложение Duplicity позволяет настроить автоматическое создание инкрементальных резервных копий.
Исходные данные.
FTP-сервер: rc-ftp-01.activeby.net
Имя пользователя: user
Пароль пользователя: password
Каталог, для которого создаём резервную копию: /home/bitrix/www
Установка Duplicity
Для систем семейства RedHat:
Для систем семейства Debian:
Создание резервной копии.
Будет рассматриваться создание резервной копии без шифрования. Для начала необходимо инициализировать служебные переменные:
В переменной FTP_PASSWORD сохраняется пароль FTP-пользователя. В нашей слочае – это password.
Далее необходимо запустить приложение duplicity с нужными ключами:
где,
–no-encryption – отменяет шифрование;
–full-if-older-than 2D – создавать полную резервную копию каждые два дня (необходимо для системной очистки);
–exclude – исключает каталог или файл из резервной копии;
/home/bitrix/www – каталог, для которого создаём резервную копию;
ftp:// – протокол передачи данных;
user – имя FTP-пользователя;
rc-ftp-01.activeby.net – FTP-сервер;
/www – каталог в домашней директории пользователя на FTP-сервере для хранения резервных копий.
В конце выполняем очистку служебных переменных:
Удаление резервных копий.
где,
remove-older-than – команда на удаление резервных копий;
4D – период; в данном примере удаляются копии старше 4 дней;
–force – удалять без подтверждения;
ftp://[email protected]/www – место хранение резервных копий.
Удаление будет срабатывать только в случае, когда на границе заданного периода будет полная копия. В противном случае получим предупреждение:
“Не может быть удален, потому что новые элементы зависят от него. Старые резервные копии не найдены, ничего не удалено”
Автоматическое создание резервной копии с уведомлением по почте.
Для реализации потребуется установить почтовый клиент Mutt, написать небольшой скрипт и настроить расписание его выполнение в планировщике Cron.
Установка Mutt.
Для систем семейства RedHat:
Для систем семейства Debian:
Написание скрипта
Вначале создадим файл:
Затем откроем его любым редактором, например, nano:
Запишем программный код:
Настройка расписания выполнения.
Открывает расписание текущего пользователя для редактирования:
Добавляем строку:
где,
– минуты;
2 – часы;
/root/create-backup.sh – путь к созданному скрипту .
После сохранения проверим, чтобы изменения в расписание записались:
Восстановление из резервной копии.
Для начала инициализируем служебные переменные:
В переменной FTP_PASSWORD сохраняется пароль FTP-пользователя. В нашей слочае – это password.
Далее необходимо запустить приложение duplicity с нужными ключами:
где,
restore – команда на восстановление;
–no-encryption – не использовать шифрование;
-t – аргумент для указания даты резервной копии;
4D – значение аргумента -t , означающее, что необходимо восстановть копию четырёх-дневной давности;
ftp://[email protected]/www – откуда необходимо восстановить;
/home/bitrix/www – куда необходимо восстановить (с заменой существующих данных).
Источник: https://my.activecloud.com/ru/index.php?/Knowledgebase/Article/View/478/0/duplicity-linux-rezervnoe-kopirovnie-n-ftp-server
Duplicity для бэкапа VDS | сЭВО:эволюция работ
Настроим резервное копирование сервера VDS с помощью утилиты duplicity на операционной системе CentOS 7. Для хранения резервных копий будем использовать Yandex Disk. Бэкапы защитим с помощью надежного шифрования OpenPGP. Возможность автоматического создания архивов.
Введение
В предыдущей статье «Backup сайта на Яндекс Диск» мы рассмотрели как настроить резервное копирование файлов и базы данных сайтов, но для полного спокойствия этого мало.
Как правило, ресурсы предоставляющие VDS не делают резервных копий и заботится о безопасности приходится самим владельцам VDS. Мне гораздо спокойней перед любыми действиями с сервером создать полную резервную копию.
Сюрпризы после обновления или настройкой могут вывести сервер из работы. Без резервной копии придется потратить много времени и нервов для восстановления работы сервера.
Установка Duplicity
Ознакомиться более детально с работой, настройкой и возможностями сервиса вы можете на официальном сайте производителя.
Сайт разработчика
Установим репозиторий Epel без вопросов, если он не был установлен ранее:
yum -y install epel-release
Установим Duplicity без вопросов:
yum -y install duplicity
Создания ключа OpenPGP
Можно хранить резервные копии без шифрования, но мы рассмотрим вариант с защитой. Duplicity использует OpenPGP для шифрования.
Создадим необходимый ключ выполнив команду:
gpg –gen-key = вывод команды с пояснениями. Часть информации удалена. = Выберите требуемый тип ключа: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (только для подписи) (4) RSA (только для подписи) Ваш выбор (?-подробнее)? 1 ключи RSA могут иметь длину от 1024 до 4096 бит. Какой размер ключа необходим? (2048) Запрашиваемый размер ключа 2048 бит Выберите срок действия ключа. 0 = без ограничения срока действительности = срок действительности n дней w = срок действительности n недель m = срок действительности n месяцев y = срок действительности n лет Ключ действителен до? (0) Ключ не имеет ограничения срока действительности Все верно? (y/N) y GnuPG необходимо составить UserID в качестве идентификатора ключа. Ваше настоящее имя: sevo44 Email-адрес: [email protected] Комментарий: duplicity-backup Вы выбрали следующий User ID: “sevo44 (duplicity-backup) ” Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход? o Для защиты секретного ключа необходима фраза-пароль. !!! Ввводим пароль 2 раза и не забываем его !!! gpg: ключ 37D34631 помечен как абсолютно доверяемый. открытый и закрытый ключи созданы и подписаны. pub 2048R/37D34631 2017-05-08 Отпечаток ключа = 0AFF 9E2E 52DB 7ED2 480D 5DE2 971F 83F8 37D3 4631 uid sevo44 (duplicity-backup) sub 2048R/C5730EC9 2017-05-08
Вот наш ID ключа 37D34631 который мы и будем использовать.
Подключение Yandex disk
Установим необходимый пакет:
yum -y install davfs2
Создадим папку куда будем монтировать:
mkdir /mnt/ydisk_backup_vds
Подключим Yandex Disk:
mount -t davfs https://webdav.yandex.ru /mnt/ydisk_backup_vds/ = вывод команды = Please enter the username to authenticate with server https://webdav.yandex.ru or hit enter for none. Username: [email protected] Please enter the password to authenticate user [email protected] with server https://webdav.yandex.ru or hit enter for none. Password: ******** /sbin/mount.davfs: Warning: can't write entry into mtab, but will mount the file system anyway
Для отмантирования диска:
umount /mnt/ydisk_backup_vds
Вводить каждый раз данные не удобно и мы настроим подключение без этих вопросов:
mcedit /etc/davfs2/secrets = необходимые данные для добавления = # Данные для подключения к Yandex Disk /mnt/ydisk_backup_vds/ [email protected] password
Теперь при подключении не будет запроса логина и пароля.
Cсоздадим папку на сервере куда будем распаковывать из архива:
mkdir /restore
Все подготовительные действия выполнены и можно приступать к работе с сервисом.
Работа с Duplicity
Рассмотрим основные моменты работы с сервисом.
Ручное создание архивов
Можно настроить автоматическое монтирование Yandex Diska при загрузке сервера указав нужные параметры в файл /etc/fstab. Мне кажется это не разумно, но как именно настраивать решать только вам.
Создадим полный архив с помощью ключа и исключим папки не нужные для резервной копии.
duplicity –encrypt-key=37D34631 –exclude=/restore –exclude=/proc –exclude=/sys –exclude=/dev –exclude=/proc –exclude=/sys –exclude=/mnt –exclude=/media –exclude=/tmp –exclude=/var/spool –exclude=/var/cache –exclude=/var/tmp –exclude=/swap / file:///mnt/ydisk_backup_vds/backup_vds = вывод команды = Локальные и удалённые метаданные синхронизированы, синхронизация не требуется. Время последней полной резервной копии: нету Сигнатуры не найдены, переключение на полную резервную копию. !!!! Процесс не быстрый, ждем !!!! ————-[ Статистика резервного копирования ]————- StartTime 1494264679.29 (Mon May 8 20:31:19 2017) EndTime 1494264988.55 (Mon May 8 20:36:28 2017) ElapsedTime 309.26 (5 minutes 9.26 seconds) SourceFiles 43662 SourceFileSize 1504877467 (1.40 GB) NewFiles 43662 NewFileSize 1504877467 (1.40 GB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 43662 RawDeltaSize 1481346284 (1.38 GB) TotalDestinationSizeChange 627905129 (599 MB) Errors 0
Распакуем все что есть в папку restore:
duplicity –encrypt-key=37D34631 –file-to-restore / file:///mnt/ydisk_backup_vds/backup_vds /restore = вывод команды = Локальные и удалённые метаданные синхронизированы, синхронизация не требуется. Время последней полной резервной копии: Mon May 8 20:42:33 2017 Кодовая фраза GnuPG: тот пароль что указывали при генерации ключа!
После появления строки приглашения консоли проверяем папку restore.
Если необходимо выдернуть из архива только определенные папки или файлы необходимо выполнить команду ( в нашем случае мы распаковали папки etc):
duplicity –encrypt-key=37D34631 –file-to-restore etc file:///mnt/ydisk_backup_vds/backup_vds /restore/etc
Полуавтоматическое создание архивов
Немного автоматизируем процесс работы с сервисом. Напишем скрипт который выполнит монтирование Yandex Disk, произведёт резервное копирование и отключать диск.
Создадим скрипты для бэкапа и восстановления в папку restore.
mcedit /root/duplicity_bakup.sh = необходимые данные = #!/bin/sh # Монтируем Yandex.Disk mount -t davfs https://webdav.yandex.ru /mnt/ydisk_backup_vds/ # Создаем резервную копию duplicity –encrypt-key=37D34631 –exclude=/restore –exclude=/proc –exclude=/sys –exclude=/dev –exclude=/proc –exclude=/sys –exclude=/mnt –exclude=/media –exclude=/tmp –exclude=/var/spool –exclude=/var/cache –exclude=/var/tmp –exclude=/swap / file:///mnt/ydisk_backup_vds/backup_vds # Отключаем Yandex.Disk umount /mnt/ydisk_backup_vds/mcedit /root/duplicity_restore.sh = необходимые данные = #!/bin/sh # Монтируем Yandex.Disk mount -t davfs https://webdav.yandex.ru /mnt/ydisk_backup_vds/ # Распаковываем архив в папку restore duplicity –encrypt-key=37D34631 –file-to-restore / file:///mnt/ydisk_backup_vds/backup_vds /restore # Отключаем Yandex.Disk umount /mnt/ydisk_backup_vds/
Дадим необходимые права файлам:
chmod +x /root/duplicity_bakup.sh chmod +x /root/duplicity_restore.sh
Для проверки можете запустить в консоли скрипты, указав полный путь к ним и убедится что все работает правильно.
Для постоянного автоматического резервного копирование можно добавить строчку в /etc/crontab и копии будет создаваться по расписанию.
Проверка и удаление архивов
Посмотрим информацию о резервных копиях в необходимом каталоге:
duplicity collection-status –encrypt-key=37D34631 file:///mnt/ydisk_backup_vds/backup_vds/ = вывод команды = Синхронизация удалённых метаданных с локальными временными файлами… Время последней полной резервной копии: Tue May 9 11:49:43 2017 Состояние сбора —————– Соединение с внутренним интерфейсом: BackendWrapper Папка архива: /root/.cache/duplicity/7662853acae7adf7fc3957d15d7c9b58 Найдено 0 вторичных цепочек резервных копий. Найдена первичная цепочка резервного копирования с соответствующей цепочкой подписи: ————————- Цепочка начата: Tue May 9 11:49:43 2017 Цепочка завершена: Tue May 9 11:49:43 2017 Количество содержащихся наборов резервного копирования: 1 Общее число содержащихся томов: 4 Тип резервной копии: Время: Число томов: Полная Tue May 9 11:49:43 2017 4 ————————- Отсутствуют изолированные или неполные наборы резервного копирования.
Удаление всех резервных копий кроме последней:
duplicity –encrypt-key=37D34631 remove-all-but-n-full 1 –force file:///mnt/ydisk_backup_vds/backup_vds/
Удаление копий старше 1 месяца:
duplicity –encrypt-key=37D34631 remove-older-than 1M file:///mnt/ydisk_backup_vds/backup_vds/
Результат
Данная утилита очень гибкая в настройке и позволяет использовать её в разных вариантах. Существуют готовые скрипты автоматизации управления которые у меня не получилось настроить да и незачем усложнять то что не надо. Шифрование архивов еще никому не вредило и сервис делает это просто и понятно.
Источник: https://sevo44.ru/duplicity-dly-backup-vds/
Консольный BackUP с помощью Duplicity на примере CentOS 6.5
Подключим репозиторий EPEL, для этого выполним следующие команды
Теперь установим нужные пакеты
duplicity – будет отвечать за сам бэкап cifs-utils – потребуется для работы с NTFS разделами и их подключением по сети dosfstools – для поддержки mkfs.vfat, mkfs.msdos ntfsprogs – для поддержки mkfs.ntfs Посмотрим куда подключились диски
Подключаемся к нужному нам диску, например sdc
Создаём новый основной раздел. (Команда n). В нашем случае на всю ширину диска. Создаем партицию
Нажимаем «p», «1» и дальше только «ENTER»
По умолчанию создаётся базовая система для текущей операционной системы, в нашем случае это ext3. Чтобы создать другой. Нажимаем t и вводим код NTFS системы.
Полный листинг всех доступных файловых систем выдаётся по команде L, после t.
Нажимаем «7» (Выбираем NTFS)
Проверяем наши действия. Выводим итоговую таблицу разделов командой «p»
Если всё верно, производим запись на диск. Нажимаем «w» и дальше «ENTER»
Внимание! Любые данные на диске будут удалены!
Мы создали таблицу разделов. Однако для работы диска нам нужно его отформатировать.
Готово Выполним команду blkid чтобы узнать UUID наших разделов.
и получим в ответ, где видим идентификаторы
Создадим каталоги куда будут монтироваться диски
Добавим строки в fstab для монтирования при загрузке
nano /etc/fstab
Для разделов
Для сетевой папки
Настройка дисков закончена
Действия выполняются на основе CRON.
Добавим в crontab следующие строки
00 1 * * * означает выполнить ежедневно в 1:00
00 */3 * * * означает выполнять каждые 3 часа 00 минут
* 3 * * 0 – означает выполнять каждое воскресенье в 3 часа
разберемся с duplicity:
full – означает выполнить полый бэкап
incr – инкрементный(записывает только изменения), возможно только после создания полного
–no-encryption – не шифровать, по умолчанию шифрование включено
–volsize=100 – размер блоков по умолчанию 25Mb
–log-file=/backup/duplicity.log – вести лог файл /backup/duplicity.log
/mnt/disk3/ – откуда взять файлы
file:///mnt/disk1/ – куда положить файлы бэкапа
remove-older-than 7D –force file:///mnt/disk1/ – удаление бэкапов старше 7 дней из директории
duplicity full /source/ file:///target/ –no-encryption #полный бэкап
duplicity incr /source/ file:///target/ –no-encryption #инкрементальный бэкап(возможно только после полного)
duplicity restore file:///target/ /new –no-encryption #полное восстановление с последней версии
duplicity restore file:///target/ /source/ -t 1h –no-encryption #полное восстановление состояния час назад
duplicity -t 1h –file-to-restore some_dir/myfile file:///target/ /source/ #восстановить один файл с состояния час назад
duplicity verify file:///target/ /source/ –no-encryption #сверить файлы с бэкапом(последняя версия)
duplicity verify file:///target/ /source/ -t 1h –no-encryption #сверить файлы с бэкапом(состояние час назад)
duplicity list-current-files file:///target/ #просмотр списка файлов
duplicity collection-status file:///target/ #информация о бэкапе(начата/закончена, количество etc)
Источник: https://blog.nikmc.ru/2014/01/backup-duplicity-centos-65.html
How To Use Duplicity with GPG to Securely Automate Backups on Ubuntu
Duplicity is a versatile local and remote backup program that can implement a number of transfer protocols and third-party storage solutions.
In this guide, we will discuss how to install duplicity on an Ubuntu 12.04 VPS. We will be installing from source and then configuring it to take advantage of GPG encryption.
To follow along, you will need access to two machines, one Ubuntu 12.04 VPS, which will be backed up, and a second Linux machine or VPS of any variety that can be accessed by SSH.
How To Install Duplicity from Source on Ubuntu
We are using an Ubuntu 12.04 VPS for this guide. The duplicity package in the default repositories is outdated, and actually suffers from some problems with connecting to remote hosts due to a change in the backend.
We will avoid these problems by getting the source files and installing manually.
Log into the Ubuntu 12.04 VPS that you will be backing up, as root.
Install the Prerequisite Packages
Although we are installing duplicity from source, we will get the prerequisites from the default Ubuntu repositories.
Update the source database and then install the needed packages with these two commands:
apt-get update
apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev
This installs a number of different handlers for transferring the data to the remote computer. We won't be using most of these within this guide, but they are good options to have.
Download and Install Duplicity from Source
The duplicity source files are housed at at launchpad.net. We will download them to the root user's home directory.
cd /root
wget https://code.launchpad.net/duplicity/0.6-series/0.6.22/+download/duplicity-0.6.22.tar.gz
Unpack the source and move into the package directory that is created:
tar xzvf duplicity*
cd duplicity*
Next, we will complete the actual installation with the following command:
python setup.py install
Because this is a package installed from source, it will be placed in the /usr/local/bin/ directory.
Create SSH and GPG Keys
Our configuration of duplicity will use two different kinds of keys to achieve a nice intersection between convenience and security.
We will use SSH keys to securely authenticate with the remote system without having to provide a password. We will also use GPG to encrypt the data before we transfer it to the backup location.
Create SSH Keys
We will generate an RSA encrypted SSH key for our root user to allow password-less logins to the machine that will host the backups.
If you have not done so already, make sure you have a root password configured on the machine you will be transferring the data to. You can do this by logging into the machine as root (through SSH or the Console Access button on the droplets page if this is a VPS) and issuing this command:
passwd
Back in the droplet with duplicity, we will generate a key pair with the following command:
ssh-keygen -t rsa
Press Enter at the prompts to create a password-less SSH key with the default settings.
Transfer it to the system that will host your backups with this command:
ssh-copy-id root@backupHost
Answer yes to accept the unverified host, and then enter the root password of the remote system to transfer your public key.
Test that you can now log in without a password from your duplicity droplet by issuing:
ssh root@backupHost
You should be logged in without having to provide any further credentials.
While you are logged in through SSH, create the directory structure that will house our backup files:
Источник: https://digitalocean.com/community/tutorials/how-to-use-duplicity-with-gpg-to-securely-automate-backups-on-ubuntu
How to create a secure incremental offsite backup in Linux with Duplicity
If you maintain mission-critical data on your server, you probably want to back them up on a remote site for disaster recovery.
For any type of offsite backup, you need to consider encryption in order to avoid any unauthorized access to the backup.
In addition, it is important to use incremental backup, as opposed to full backup, to save time, disk storage and bandwidth costs incurred in ongoing backup activities.
Duplicity is an encrypted incremental backup tool in Linux. Duplicity uses librsync to generate bandwidth/space-efficient incremental archives. It also uses GnuPG to encrypt and/or sign backup archives to prevent unauthorized data access and tampering.
In this tutorial, I will describe how to create a secure incremental offsite backup in Linux with Duplicity.
Install Duplicity on Linux
To install Duplicity on Debian, Ubuntu or Mint:
$ sudo apt-get install duplicity python-paramiko
To install Duplicity on CentOS or RHEL, first enable EPEL repository, and run:
$ sudo yum install duplicity python-paramiko
To install Duplicity on Fedora:
$ sudo yum install duplicity python-paramiko
Create a Secure Incremental Remote Backup via SCP
To create a secure and incremental backup of a local folder (e.g., ~/Downloads), and transfer it to a remote SSH server via SCP, use the following command. Note that before proceeding, you must enable password-less SSH login to the remote SSH server first.
$ duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/ Local and Remote metadata are synchronized, no sync needed. Last full backup date: none GnuPG passphrase: Retype passphrase to confirm: No signatures found, switching to full backup. ————–[ Backup Statistics ]————– StartTime 1375918500.17 (Wed Aug 7 19:35:00 2013) EndTime 1375918539.07 (Wed Aug 7 19:35:39 2013) ElapsedTime 38.90 (38.90 seconds) SourceFiles 3 SourceFileSize 65982804 (62.9 MB) NewFiles 3 NewFileSize 65982804 (62.9 MB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 3 RawDeltaSize 65978708 (62.9 MB) TotalDestinationSizeChange 66132356 (63.1 MB) Errors 0 ————————————————-
When you create a remote backup of given data for the first time, Duplicity will create a full backup, and ask you to set an initial GnuPG passphrase for encryption. Subsequent runs of Duplicity will create incremental backups, and you need to provide the same GnuPG passphrase created during the first run.
Create a Secure Incremental Remote Backup in Non-interactive Mode
If you do not want to be prompted to enter a passphrase, you can set PASSPHRASE environment variable, prior to running Duplicity as follows.
$ PASSPHRASE=mypass duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/
If you do not want to pass a plain-text passphrase in the command-line, you can create the following backup script. To be more secure, make the script readable to you only.
export PASSPHRASE=yourpass duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/ unset PASSPHRASE
Create an Incremental Remote Backup Without Encryption
If you do not need a secure backup, you can disable encryption as follows.
$ duplicity –no-encryption ~/Downloads scp://user@remote_site.com//home/user/backup/
Verify the Integrity of a Remote Backup
For critical data, it is probably a good idea to verify that a remote backup was successful. You can check whether or not the local and remote volumes are in sync, by using the following command.
$ duplicity verify scp://user@remote_site.com//home/user/backup/ ~/Downloads Local and Remote metadata are synchronized, no sync needed. Last full backup date: Wed Aug 7 19:34:52 2013 Verify complete: 8 files compared, 0 differences found.
Note that when using “verify” option, you need to reverse the order of local and remote folders; specify the remote folder first.
Restore a Remote Backup
In order to restore a remote backup locally, run the following commnad:
$ duplicity scp://user@remote_site.com//home/user/backup/ ~/Downloads_restored
To successfully restore a remote backup, the specified restore destination directory (e.g., Downloads_restored) must not exist locally beforehand.
Create a Secure Incremental Remote Backup via FTP
Besides SCP, Duplicity also supports several other protocols including FTP.
To use FTP in Duplicity, use the following format:
$ duplicity ~/Downloads ftp://username@ftp_server.com/backup_directory
For non-interactive runs, specify the FTP password in FTP_PASSWORD environment variable:
$ FTP_PASSWORD=mypass duplicity ~Downloads ftp://username@ftp_server.com/backup_directory
Duplicity Troubleshooting Tips
If you encounter the following error, this means that you did not install SSH2 protocol library for python.
BackendException: Could not initialize backend: No module named paramiko
To fix this error, install the following.
On Ubuntu, Debian or Mint:
$ sudo apt-get install python-paramiko
On Fedora, CentOS or RHEL:
$ sudo yum install python-paramiko
If you encounter the following error, it is because you did not set up password-less ssh login to a remote backup server. Make sure that you do, and retry.
BackendException: ssh connection to xxx@xxxx failed: No authentication methods available
Do you want to receive Linux FAQs, detailed tutorials and tips
Источник: https://xmodulo.com/how-to-create-secure-incremental-offsite-backup-in-linux.html
Debian / Ubuntu: Install Duplicity For Encrypted Backup In Cloud
My cloud based backup service provider has ssh access to the backup system.
How do I install and configure duplicity software for remote backups in incremental and encrypted format on Debian or Ubuntu Linux based desktop / laptop / server?
Duplicity is a piece of software which provides easy encrypted versioned remote backup of files requiring little of the remote server. It does this using GnuPG, tar, and rdiff. To transmit data it can use ssh/scp, local file access, rsync, ftp, and Amazon S3.
You also need to setup a passphrase. A passphrase is a sequence of words or other text used to control access to a computer system, program or data. A passphrase is similar to a password in usage, but is generally longer for added security.
Passphrases are often used to control both access to, and operation of, cryptographic programs and systems. Passphrases are particularly applicable to systems that use the passphrase as an encryption key.
I strongly recommend that you setup a passphrase for your ssh-keys.
Install duplicity on Debian / Ubuntu Linux
Open the terminal and type the following command (Red hat and friends see our previous faq “Install duplicity on RHEL/CentOS based systems” for more information):
$ sudo apt-get install duplicity OR
# apt-get install duplicity
Sample outputs:Reading package lists… Done
Building dependency tree Reading state information… Done
The following extra packages will be installed: librsync1 python-crypto python-gnupginterface python-paramiko
Suggested packages: python-boto ncftp python-pexpect python-cloudfiles python-gdata tahoe-lafs python-crypto-dbg python-crypto-doc
The following NEW packages will be installed: duplicity librsync1 python-crypto python-gnupginterface python-paramiko
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,735 kB of archives.
After this operation, 10.4 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 https://mirrors.kernel.org/debian/ stable/main librsync1 amd64 0.9.7-9 [72.1 kB]
Get:2 https://mirrors.kernel.org/debian/ stable/main python-gnupginterface all 0.3.2-9.1 [21.0 kB]
Get:3 https://mirrors.kernel.org/debian/ stable/main duplicity amd64 0.6.18-3 [309 kB]
Get:4 https://mirrors.kernel.org/debian/ stable/main python-crypto amd64 2.6-4 [524 kB]
Get:5 https://mirrors.kernel.org/debian/ stable/main python-paramiko all 1.7.7.1-3.1 [809 kB]
Fetched 1,735 kB in 6s (262 kB/s) Selecting previously unselected package librsync1:amd64.
(Reading database … 36532 files and directories currently installed.)
Unpacking librsync1:amd64 (from …/librsync1_0.9.7-9_amd64.deb) …
Selecting previously unselected package python-gnupginterface.
Unpacking python-gnupginterface (from …/python-gnupginterface_0.3.2-9.1_all.deb) …
Selecting previously unselected package duplicity.
Unpacking duplicity (from …/duplicity_0.6.18-3_amd64.deb) …
Selecting previously unselected package python-crypto.
Unpacking python-crypto (from …/python-crypto_2.6-4_amd64.deb) …
Selecting previously unselected package python-paramiko.
Unpacking python-paramiko (from …/python-paramiko_1.7.7.1-3.1_all.deb) …
Processing triggers for man-db …
Setting up librsync1:amd64 (0.9.7-9) …
Setting up python-gnupginterface (0.3.2-9.1) …
Setting up duplicity (0.6.18-3) …
Setting up python-crypto (2.6-4) …
Setting up python-paramiko (1.7.7.1-3.1) …
Processing triggers for python-support …
How do I create SSH keys?
To run automated backups, you must set password-less SSH connections using an SSH keys. Use ssh-keygen command to create ssh-keys:
ssh-keygen -t rsa
Skip a passphrase (not recommend)
If you trust your local system/server/latop/desktop do not enter a passphrase. Just hit enter twice and set an empty passphrase. See the following step-by-step guide for detailed information on setting up ssh keys:
Setup a passphrase for ssh keys (recommend)
If you are paranoid, set a passphrase when prompted and install keychain to setup password less login:
$ sudo apt-get install keychain Edit your ~/.bash_profile, enter:
vi $HOME/.bash_profile
Append the following keychain config directives:
## Note –clear option is a security feature ## /usr/bin/keychain –clear $HOME/.ssh/id_rsa source $HOME/.keychain/$HOSTNAME-sh |
## Note –clear option is a security feature ## /usr/bin/keychain –clear $HOME/.ssh/id_rsa source $HOME/.keychain/$HOSTNAME-sh
Save and close the file. See our faq: “keychain: Set Up Secure Passwordless SSH Access For Backup Scripts” for more information.
How do I create a GPG keys?
Install GNU privacy guard – a free PGP replacement:
# apt-get install gnupg OR
$ sudo apt-get install gnupg
Type the following command to create a GPG key to encrypt backups:
# gpg –gen-key
Sample outputs:
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: keyring `/root/.gnupg/secring.gpg' created Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: “Heinrich Heine (Der Dichter) ” Real name: Home Nas Server Email address: root@nas01 Comment: Home Nas Server Backup You selected this USER-ID: “Home Nas Server (Home Nas Server Backup) ” Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. |
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: keyring `/root/.gnupg/secring.
gpg' created Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid.
0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: “Heinrich Heine (Der Dichter) ” Real name: Home Nas Server Email address: root@nas01 Comment: Home Nas Server Backup You selected this USER-ID: “Home Nas Server (Home Nas Server Backup) ” Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key.
To list your gpg keys, run:
# gpg –list-keys
Sample outputs:
/root/.gnupg/pubring.gpg ———————— pub 4096R/4AABBCC7 2013-10-04 uid Home Nas Server (Home Nas Server Backup) sub 4096R/12345678 2013-10-04 |
/root/.gnupg/pubring.gpg ———————— pub 4096R/4AABBCC7 2013-10-04 uid Home Nas Server (Home Nas Server Backup) sub 4096R/12345678 2013-10-04
You need to note down the public key 4AABBCC7.
How do I backup files?
The following example use scp to backup /home/nixcraft/ to ~/backups on the cloud.example.com system:
duplicity /home/nixcraft/ scp://[email protected]/backups
Exclude the files from backup
The following command will backup the / (whole root file system) but excludes /tmp, /proc, /nas, /jails, and /mnt directories from backup:
duplicity –exclude /tmp/ –exclude /proc/ –exclude /nas/
–exclude /jails/ –exclude /mnt/ / scp://[email protected]/backups
Include the files in backup
The following command will backup only the /home/, /root/, /etc/, and /var/spool/cron/ directories under root (/) file system using the –include option:
duplicity –include /home/ –include /root –include /etc/
–include /var/spool/cron/ –exclude '**' / scp://[email protected]/backups
Encrypted backup commands
When backing up, encrypt to the given public key, instead of using symmetric (traditional) encryption. You need to use the –encrypt-key option as follows. To find out your gpg key-id use the following command:
gpg –list-keys
Full backup duplicity command
To make full encrypted backup, enter:
duplicity full –encrypt-key=”4AABBCC7″ /home/nixcraft/ scp://[email protected]/backups
Incremental backup duplicity command
To make incremental encrypted backup, enter:
duplicity incr –encrypt-key=”4AABBCC7″ /home/nixcraft/ scp://[email protected]/backups
List the files stored in the archive
To see the files currently backed up in the archive, enter:
duplicity list-current-files –encrypt-key=”4AABBCC7″ scp://[email protected]/backups
Verify backup duplicity command
You can verify backup with the following command:
duplicity verify –encrypt-key=”4AABBCC7″ scp://[email protected]/backups /home/nixcraft
Rotate backup duplicity command
You can delete all backup sets older than the given time. Now suppose you want to retain 60 days of backup and remove files older than 60 days, enter:
duplicity remove-older-than 60D –encrypt-key=”4AABBCC7″ –force scp://[email protected]/backups
Pass the remove-all-but-n-full count to delete all backups sets that are older than the count:th last full backup. In other words, keep the last count full backups and associated incremental ets). The count must be larger than zero.
A value of 1 means that only the single most recent backup chain will be kept. Note that the option –force will be needed to delete the files rather than just list them.
duplicity remove-all-but-n-full 10 –encrypt-key=”4AABBCC7″ –force scp://[email protected]/backups
Restore (recover) last backup duplicity command
Now suppose you accidentally delete /home/nixcraft/ and want to restore it the way it was at the time of last backup, enter:
mkdir /home/nixcraft/
duplicity –encrypt-key=”4AABBCC7″ scp://[email protected]/backups /home/nixcraft/
Restore (recover) specific file duplicity command
If you wanted to restore just the file “Documents/resume.doc” in /home/nixcraft/ as it was seven days ago into /home/nixcraft/Documents, type:
duplicity -t 7D –file-to-restore=”Documents/resume.doc” –encrypt-key=”4AABBCC7″ scp://[email protected]/backups /home/nixcraft/Documents
Cleaning up backups
You can delete the extraneous duplicity files. Non-duplicity files, or files in complete data sets will not be deleted.
This should only be necessary after a duplicity session fails or is aborted prematurely.
Note that the –force option will be needed to delete the files rather than just list them:
duplicity cleanup –force –encrypt-key=”4AABBCC7″ scp://[email protected]/backups
Putting it all together
A sample shell script:
#!/bin/bash # A simple backup script wrapper for duplicity. # Author – nixCraft under GPL v2+ # —————————————————– ## Define VARS ## _gpg_key='4AABBCC7' _target='scp://[email protected]/backups' _duplicity='/usr/bin/duplicity' _src='/home/nixcraft/' ## Unlock ssh/scp/sftp ## source $HOME/.keychain/$HOSTNAME-sh ## Cleanup ## $_duplicity –force –encrypt-key=”${_gpg_key}” ${_target} ## Rotate old backups than 60 days ## $_duplicity remove-older-than 60D –encrypt-key=”${_gpg_key}” ${_target} ## Backup our home sweet home i.e. /home/nixcraft/ ## ## Note: full backup if older than 60 day else do incremental backup ### $_duplicity ${_src} –encrypt-key=”${_gpg_key}” –full-if-older-than 60D ${_target} |
#!/bin/bash # A simple backup script wrapper for duplicity. # Author – nixCraft under GPL v2+ # —————————————————– ## Define VARS ## _gpg_key='4AABBCC7' _target='scp://[email protected].
com/backups' _duplicity='/usr/bin/duplicity' _src='/home/nixcraft/' ## Unlock ssh/scp/sftp ## source $HOME/.
keychain/$HOSTNAME-sh ## Cleanup ## $_duplicity –force –encrypt-key=”${_gpg_key}” ${_target} ## Rotate old backups than 60 days ## $_duplicity remove-older-than 60D –encrypt-key=”${_gpg_key}” ${_target} ## Backup our home sweet home i.e.
/home/nixcraft/ ## ## Note: full backup if older than 60 day else do incremental backup ### $_duplicity ${_src} –encrypt-key=”${_gpg_key}” –full-if-older-than 60D ${_target}
Setup cron job as follows:
@daily /path/to/your/awesome/backup.script.sh
Recommend readings:
- Man pages: bash(1)
- duplicity home page
Источник: https://cyberciti.biz/faq/duplicity-installation-configuration-on-debian-ubuntu-linux/
Как ускорить резервное копирование Duplicity?
Вы скажете, что в этих резервных copyх вы viewите пропускную способность около 50 МБ / с.
50 Мбайт / с – это порядок того, что вы можете ожидать для пропускной способности полуслучайных дисков с одиночными дисками с вращающимся ржавчиной (т. Е. Не зеркальным или полосатым RAID, чтобы позволить считываниям распространяться по дискам для увеличения пропускной способности).
Обратите внимание, что некоторые конфигурации RAID эффективно ограничивают даже лучшую пропускную способность по сравнению с самым медленным диском.
Да, многие жесткие диски оцениваются до ~ 200 МБ / с, но имейте в viewу, что эти цифры являются наилучшими последовательными numbersми доступа. 50 Мбайт / с также составляет около 400 Мбит / с, что с некоторой ошибкой для IP-издержек и т. Д.
Выходит на 500-600 Мбит / с на сетевом проводе, поэтому, пока вы не насыщаете гигабитную связь только этим, вы довольно близки к вероятным территориям, связанным с столкновениями.
Вы не даете никаких номеров для использования ЦП при выполнении резервных копий, кроме того, что у вас есть три гипервизора с кучей виртуальных машин на каждом, более или менее занятом ».
Но копирование данных и compression не очень интенсивные для CPU, и если во time резервного копирования у вас есть time для processора, вы не привязываетесь к ЦП.
Единственный способ ответить на этот вопрос – выяснить, какой фактор ограничивает пропускную способность, а затем сосредоточить свои усилия там.
Я предполагаю , что вы связаны с I / O, либо при чтении, либо в записи, и что вы можете быть связаны networkingю. Вы говорите о выделенном serverе резервного хранилища с гигабитным Ethernet-connectionм, но вы не говорите ничего о природе этого соединения.
Является ли сетевое connection for-backups между физическими узлами общим или выделенным? (Отдельная физическая networking, соединяющая каждый из HV-serverов с serverом резервного копирования, будет приемлемой, если только одна виртуальная машина или HV одновременно перемещает данные резервного копирования.)
Если физическое сетевое подkeyение к serverу резервного копирования используется совместно с другим сетевым трафиком, вы можете перейти к выделенной архитектуре соединения.
Насколько вы выиграете от этого, во многом зависит от того, где сжаты данные и сколько коллизий вы действительно viewите сейчас, но если вы это сделаете, и больше ничего не сможете удвоить пропускную способность сети, и, следовательно, если вы являетесь networkingю связанный, сократить time резервного копирования пополам.
Если вы привязаны к операции ввода / вывода при чтении и / или записи, то переход к зеркальной или полосатой настройке, позволяющей распределять дисковый ввод-вывод на несколько дисков, может увеличить пропускную способность; это увеличило бы общую пропускную способность шины. Конечно, это имеет свои недостатки.
В зависимости от того, сколько данных вы нажимаете в любой момент времени, добавление более быстрого кэша кэш-памяти на server резервного хранилища также может помочь, но мое подозрение было бы в том, что если вы привязаны к вводу-выводу, это на стороне чтения, потому что записи, вероятно, более или менее последовательный, и в этом случае добавление кеша не поможет вам.
Вы также можете подумать о переходе в fileовую систему на виртуальных машинах или на HV-serverах и / или на serverе резервного копирования, который выполняет compression данных на лету, записанное на диск, или вkeyение такого сжатия, если оно поддерживается , Это будет стоить processорного времени, но увеличивает эффективную скорость передачи данных на диске, потому что меньшее количество данных должно быть перемещено в и из физических платформ для того же объема хранимых данных в userском пространстве. Независимо от того, будет ли это чистая прибыль в любой ситуации, в основном бросать моlessу, и ее необходимо оценивать в каждом конкретном случае, но это, безусловно, одна из возможностей для ситуации, когда вы связаны с вводом-выводом если с самого начала данные сильно сжимаются. Даже если данные могут быть сжаты только на 20% (эквивалентно коэффициенту сжатия 1,25: 1 и, безусловно, достижимы, например, на языке естественного языка, для сравнения ZFS с compressionм gzip-9 дает мне compression 1,20: 1 при выборке Интерless-websiteы, вkeyая изображения ), те же самые скорости передачи данных 50 МБ / с внезапно дают вам более 60 МБ / с переданных полезных данных, предполагая, что основной processор может не отставать от сжатия и декомпрессии. Обратите внимание, что зашифрованные данные должны сжиматься очень плохо, так как они должны напоминать random шум; вы обычно сжимаете перед encryptionм, если вы планируете шифровать данные, и в этом случае compression на уровне fileовой системы на зашифрованной стороне не принесет вам никакой пользы.
Источник: https://server.bilee.com/79158.html
Автоматизация дублирования резервных копий с использованием cron Ubuntu Linux
Оригинальная ссылка: https://peterpetrakis.blogspot.com/2013/06/automating-and-encrypting-duplicity.html
Потерпев потерю данных в прошлом и взлома на хранилище, говорит о том, что неплохо иметь регулярные резервные копии. Я хотел иметь избыточность в случае отказа моего локального сервера, и я хотел зашифровать свои резервные копии с помощью защищенного паролем ключа gpg.
В текущем решении используется кодовая фраза, хранящаяся в открытом тексте за пределами пути резервного копирования. Я планирую исследовать перемещение ключа gpg на смарт-карту и с помощью контактного ключа, чтобы разблокировать его. Если у кого есть какие-либо дополнительные решения, пожалуйста, опишите их подробно.
Сохранение необходимых переменных окружения
Запуск чего-либо из cron отделяет его от текущей среды, вы теряете все переменные, описывающие такие вещи, как ваш gsh-агент ssh-agent, что вам нужно, чтобы начать общение с удаленным сервером.
Я сделал простой подход, в своем ~ .bashrc я создал следующее.
cat> ~ / .backenvrc $ BACKUP / crontab-backup 0 0 * * * / usr / bin / dpkg –get-selections> $ BACKUP / установленное программное обеспечение 0 0 * * * /usr/local/bin/ppetraki-backup.sh inc 0 0 * * Fri /usr/local/bin/ppetraki-backup.sh full
Обратите внимание, что я также поддерживаю свой crontab и список установленных программ, в конце концов я переведу его в другой скрипт, который также делает такие вещи, как
1) резервное копирование моих закладок из chrome и firefox
2) резервное копирование почты в не двоичном формате
Текущий формат cron выполняет инкрементную резервную копию каждую ночь и полную резервную копию каждую пятницу.
Скрипт драйвера
Это завершает вызов двуличности и приобретает необходимые переменные среды. Дублизм сам по себе может быть волосатым со всеми переключателями командной строки и даже большей нагрузкой, если у вас есть несколько целей.
У меня избыточные резервные копии, сначала на локальный сервер и удаленный сервис, предоставляемый rsync.net (отличная поддержка клиентов!).
Я нашел horcrux, чтобы быть прекрасной, легкой, двуличной оберткой в соответствии с моими потребностями.
Скрипт драйвера, который является внешним по отношению к моему пути к резервной копии, также содержит мою кодовую фразу GPG для шифрования моих резервных копий. В конце концов я хочу перейти на систему с управляемой смарт-картой (здесь проиллюстрировано) ( https://blog.josefsson.org/2011/10/11/unattended-ssh-with-smartcard/ )
[/usr/local/bin/ppetraki-backup.sh]
#! / Bin / Баш export PATH = $ PATH: / usr / local / bin Действие = $ 1 export USER = XXX export HOME = / home / $ USER источник $ HOME / .backenvrc эхо “проверяющая среда” echo “gpg-agent: $ {GPG_AGENT_INFO}” echo “gpg-key: $ {GPGKEY}” echo “ssh-agent-pid: $ {SSH_AGENT_PID}” echo “ssh-auth-sock: $ {SSH_AUTH_SOCK}” если [-z $ action]; тогда эхо “требует действия!” выход 1 фи экспорт PASSPHRASE = [-z $ PASSPHRASE] && exit 1 эхо “начало” для конфигурации в local_backup remote_backup делать horcrux clean $ config horcrux $ action $ config сделанный
Использование horcrux для двуречия
У Horcrux есть понятие профилей, которое усложняет управление двуличным CLI. Вот пример профиля.
Источник: https://ubuntu.fliplinux.com/11003.html
DuplicityBackupHowto – Community Help Wiki
Introduction
There are many different applications that are available to back up Ubuntu. Each one has its strengths and weaknesses. Some are made for enterprise environments where it is necessary to back up many computers quickly and efficiently. Others are made for home environments and come with a simple wizard-driven GUI interface.
Still others need to be accessed with the command line.<\p>
Besides the interfaces of various backup applications, these applications have varied functions. For example, a particular application can back up to one or many DVDs, CDs, disk drives, FTP sites, SMB drives, and other media or may not back up to one or more of those things.
As varied as these programs are, so are the needs of the individuals who use them.<\p>
Installation and Setup
- Duplicity can be installed by searching for it by name in Synaptic, marking it for installation, and then simply applying the change.
Alternatively, it can be installed by typing the following command in a terminal window:
- sudo apt-get install duplicity
- Additionally, you may need to install the NcFTP package to be able to use Duplicity ftp backup.
Simply run the following command:
- sudo apt-get install ncftp
- The next step is to prepare an off-site location to receive the backup files. For this Howto we will be using a remote FTP server as the off-site backup file storage location. Although any remote FTP server will do, an excellent off-site location to store files is on a web host account.
An FTP account can be easily set up by using the web host account control panel (perhaps CPanel, depending on the hosting provider).
-
If you decide to use a web host account, it's a good idea to make a separate FTP account rather than using the main account credentials. This will help to keep things separate and is a good security measure as well.
-
- Once the FTP account is set up, it should be tested using an FTP client such as gFTP from the machine that will be running Duplicity. This will ensure that a connection to the remote site is possible and that the FTP site has been set up correctly.
- It's a good idea at this time to create a directory structure for your backups on the remote FTP server. In this Howto, we will be using the directory name of the directory that we intend to back up in Ubuntu. In other words, when backing up the /etc directory, then create a /etc directory off the root of the backup account to house that particular backup set.
Basic Functionality
Once Duplicity is installed and an FTP account is ready to receive the backup files, then it's time to make a small script to test it out. Simply open up gedit. Copy and paste the following lines of code into the new document. Then save the file as backup.
sh. You can then make the file executable and not readable by others using the command chmod 700 backup.sh in a terminal window or by right-clicking the file in Nautilus, clicking on Properties from the menu and then changing the permissions on the Permissions tab.
<\p>
Backup
- export PASSPHRASE=SomeLongGeneratedHardToCrackKey
export FTP_PASSWORD=WhateverPasswordYouSetUp
duplicity /etc ftp://[email protected]/etc
unset PASSPHRASE
unset FTP_PASSWORD
The above script will cause Duplicity to back up the /etc directory into compressed and encrypted volumes with the specified pass phrase, and then upload the backup files to the FTP account that is set up for it using the username and password specified.<\p>
After modifying the sample, run it by typing ./backup.
sh from a terminal window.<\p>
Here's an example of the output the script should return:
- ————–[ Backup Statistics ]————–
StartTime 1133074801.81 (Sun Nov 27 01:00:01 2005)
EndTime 1133074927.82 (Sun Nov 27 01:02:07 2005)
ElapsedTime 126.01 (2 minutes 6.01 seconds)
SourceFiles 3446
SourceFileSize 27195497 (25.9 MB)
NewFiles 3446
NewFileSize 27195497 (25.9 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 3446
RawDeltaSize 27018423 (25.8 MB)
TotalDestinationSizeChange 6865063 (6.55 MB)
Errors 0
————————————————-
On the FTP server you should find a few files similar to the following list:
- duplicity-full-signatures.2005-11-27T01:00:01-05:00.sigtar.gpg
duplicity-full.2005-11-27T01:00:01-05:00.manifest.gpg
duplicity-full.2005-11-27T01:00:01-05:00.vol1.difftar.gpg
duplicity-full.2005-11-27T01:00:01-05:00.vol2.difftar.gpg
I'm going to make some assumptions on what the files contain. But before I do, you should be aware of the Duplicity man page at https://nongnu.org/duplicity/duplicity.1.html, which contains more detail than what I am giving you here.
- The signatures file contains, signatures of each file that is backed up so that Duplicity can figure out which part of a file has changed. With that information it can upload only the missing part to complete a new backup set.
- The manifest file contains a listing of all the files in the backup set and a SHA1 hash of each file, probably so Duplicity can tell very quickly whether a file has been changed or not since the last backup.
- The volume files (vol1 and vol2) contain the actual file data. It appears that Duplicity volumes are at most 5MB. That's helpful during restores so the entire backup set does't not need to be downloaded to retrieve a single file. Duplicity will only download the volume containing that file.
Verify
Depending on the parameters and order of the parameters in the duplicity command, different functions can be performed. For example, an archive can be verified to see if a complete backup was made and what files, if any, have changed since the last backup.
The code below is an example of how to verify the archive taken by the backup.sh script (remember to remove read permissions for other users):
- export PASSPHRASE=SomeLongGeneratedHardToCrackKey
export FTP_PASSWORD=WhateverPasswordYouSetUp
duplicity verify ftp://[email protected]/etc /etc
unset PASSPHRASE
unset FTP_PASSWORD
Here is the output:
- Verify complete: 3503 files compared, 2 differences found.
Источник: https://help.ubuntu.com/community/DuplicityBackupHowto
Блог об openSUSE » Делаем backup на on-line сервисы
Technorati Tags:
Привет всем. Все наверное слышали о программе gmail drive, которая позволяет использовать почтовый ящик на гугле как виртуальный винчестер. У нее есть аналог под *nix системы, написанный на питоне – gmailfs.
Так вот, для начала я и хотел использовать google для хранения своих backup'ов.
Но протокол imap не очень быстрая штука, да еще с моей скоростью интернета, поэтому после нескольких пробных запусков я решил искать какую нибудь другую, более быструю альтернативу.
В сети существует множество on-line сервисов для хранения на них данных, но не все они подходят для задуманной целиМне нужен был сервис удовлетворяющий следующим параметрам:
– Возможность работы с сервисом напрямую, без веб-интерфейса(ftp,ssh,rsync) – Фриварность – Поддержка русского языка – Шифрование хранимых на сервере данных
– Отсутствие ограничения на объем загружаемого файла
Кто ищет – тот всегда найдет
Первоначально я попал на один из крупнейших ресурсов, предоставляющих данные услуги – . Но к сожалению, у них на бесплатном аккаунте стоит ограничение – максимальный размер загружаемого файла – 25 мб. Это совершенно меня не устраивало и я продолжил поиски.
Отбросив по тем или иным причинам, еще штук 10 сервисов я все таки смог найти то, что хотел. – шведский ресурс, предоставляющий 2 GB свободного места в бесплатном аккаунте.
На сервисе имелся доступ по webdav, что не могло не радовать, но, к сожалению, ничего не было сказано о том, в каком виде данные хранятся на сервере, т.е.
шифруются или лежат в открытом виде
Зарегистрировавшись, я узнал, что сервис предоставляет так же доменное имя вида – www.Имя пользов..mydisk.se и фото страницу, это меня конечно совсем не интересовало. Зато захотелось подключить эти 2 GB как отдельный диск в мою систему.
Погуглив, я нашел проект некоего немецкого/их разработчика/ов – wdfs. wdfs – это файловая система webdav, которая может быть примонтирована с помощью fuse.
И я решил попробовать:
linux-wrym:/mnt # zypper install wdfs
У wdfs множество параметров, но я остановлюсь только на основных, которые нам понадобятся:
accept_sslcert – принимать ssl сертификат, когда идет работа с webdav через ssl
username – имя пользователя
password – пароль пользователя
allow_other – рзрешать другим пользователям доступ к смонтированной папке
Итак, монтируем webdav как локальную папку(все действия делаем под рутом):
linux-wrym:/ # wdfs https://mydisk.
se/USERNAME/backup/ /mnt/backup -o username=USERNAME -o password=PASS -o accept_sslcert -o allow_other
Я изначально монтировал не просто диск сервиса, расположенный по адресу https://mydisk.se/USERNAME/ , а сразу папку backup, потому что к ней закрыт доступ через WEB другим людям.
Не стоит хранить ваши бэкапы там, где их могут скачать другие
И как человек ленивый – сразу добавил запись в fstab, чтобы не набирать больше полностью команду:
wdfs#https://mydisk.
se/USERNAME/ /mnt/backup fuse noauto,users,accept_sslcert,allow_other0 0 Я специально не стал вписывать username и password, потому что это потенциальная угроза безопасности, пароль спросят при монтировании, это гораздо безопаснее, чем держать их в fstab в открытом виде. Итак, подключаем диск:
linux-wrym:/mnt # mount /home/_empty/mount/backup
Все, диск для backup'а у вас в системе есть. Можете полазить в нем, попробовать что-нибудь туда скопировать, или создать папку
duplicity
Итак, диск есть, данные есть, так давайте сделаем backup. Но прежде определимся, чем и как мы будем это делать. Я конечно знаю насколько мощный инструмент rsync, к нему создано много gui'ев, но здесь я его использовать не рекомендую. Все дело в том, как я писал выше, что неизвестно используется на сервере шифрование или нет.
Поэтому, чтобы быть уверенным в сохранности своих данных, я решил воспользоваться другой утилитой – . Если вы рьяный сторонник gnu, то можете поискать другой способ, но есть ли смысл?
Вы можете загрузить или , конечно для пользователей SuSE в нашем любимом build-service уже есть готовые пакеты – У программы очень много возможностей, но я в кратце расскажу как ее пользуюсь ей.
Backup'им Для начала предлагаю в .bashrc добавить фразу-пароль, необходимую для генерации ключа шифрования(Вы можете вводить ее каждый раз при синхронизации данных, но это не совсем удобно).
export PASSPHRASE=”your_pass_phrase”
Пожалуйста не поленитесь почитать хотя бы help к duplicity, там очень много полезной информации. Итак, запускаем программу:
duplicity -v 5 /home/_empty/Documents/ file:///mnt/backup
После этого duplicity создаст gpg файлы на сервере, в которых будут храниться все файлы и произведенные в них изменения. При последующих запусках duplicity будет загружать не сами файлы, а различия(diff-файлы), все зашифровано, так что можете не беспокоится о конфиденциальности ваших данных. Вы всегда можете посмотреть все изменения созданные с начала backup'а:
_empty@linux-wrym:~> duplicity collection-status file:///mnt/backup/
Если никаких ошибок не было, то у вас будет примерно вот такой вывод(часть листинга опущена):
Вот так можно просмотреть текущий список файлов, которые находятся в бэкапе:
_empty@linux-wrym:~> duplicity list-current-files file:///mnt/backup/
Программа duplicity – мощный инструмент, и если вы научитесь им пользоваться – это сильно упростит вам жизнь. duplicity поддерживает кучу протоколов, среди которых тот же самый IMAP(см. выше).
Я думаю, вы оцените преимущество хранения данных на удаленном сервере. Рекомендую делать плановый автоматический backup через cron.
Главное помните – не храните все яйца в одной корзине, и сможете забыть о проблемах с данными и их backup'ом.
Источник: https://sapfeer.ru/2009/05/01/48.html
Linux-программы для резервного копирования
Программы, используемые для выполнения полного резервного копирования путем дублирования исходных данных, называются программами резервного копирования.
Очевидно, что главной целью резервного копирования является создание порядка из хаоса с помощью восстановления важных файлов в случае возникновения аварийной ситуации.
В некоторых популярных программах резервного копирования используются sql, удаленный доступ к системе и копирование файлов на другую систему.
Если вы пользуетесь Linux, то в нем найдете на выбор много программ резервного копирования. Ниже приведен список их нескольких лучших бесплатных программ резервного копирования с открытым исходным кодом, которые можно опробовать.
Time Vault
Time Vault является Linux-эквивалентом Time Machine от Apple, базирующимся на GNOME. Как и многие другие утилиты резервного копирования, этот пакет создает инкрементные резервные копии файлов (сохраняет только изменения относительного некоторого первоначального состояния — прим.пер.), которые позже могут быть использованы для восстановления.
Его мгновенные снимки являются копиями директория в определенный момент времени. Снимки, сделанные для файлов, которые не изменились с момента предыдущего снимка, занимают очень мало места.
Это связано с тем, что вместо создания резервной копии всего файла без его изменения, в снимках используется жесткая связь с существующей резервной копией файла в ее первоначальном состоянии.
Clonezilla
Clonezilla является клоном Symantec Ghost Corporate Edition с открытым исходным кодом. Пакет базируется на использовании DRBL, образов разделов, ntfsclone, partclone и udpcast, что позволит вам получать слепок данных для резервного копирования и восстановления.
В наличии есть два варианта пакета Clonezilla: Clonezilla live и Clonezilla SE (Server Edition — серверная редакция). Clonezilla live подходит для резервной копирования и восстановления одной машины.
А Clonezilla SE предназначен для массового развертывания и может одновременно делать клоны многих компьютеров.
Duplicity
Duplicity делает копии директориев, создавая зашифрованные тома в формате tar и загружает их на удаленный или локальный файл-сервер.
Поскольку Duplicity использует librsync, инкрементные архивы экономно используют место и записывают только те части файлов, которые были изменены с предыдущего резервного копирования.
Поскольку Duplicity использует GnuPG для шифрования и / или подписывания этих архивы, они защищены от шпионажа и / или изменения их на сервере.
Bacula
Bacula является системой резервного копирования уровня предприятия, имеющей открытый код и предназначенной для гетерогенных сетей. Пакет создан для автоматизации задач, выполнение которые часто требует вмешательства системного администратора или оператора.
В Bacula есть клиенты резервного копирования Linux, UNIX и Windows, а также можно использовать ряд профессиональных устройств резервного копирования, в том числе библиотеки ленточных накопителей.
Администраторы и операторы могут конфигурировать систему при помощи консоли с командной строкой, графического интерфейса GUI и веб-интерфейса; в качестве сохраняемых данных используется информационный каталог, который может храниться в MySQL, PostgreSQL или SQLite.
AMANDA
AMANDA (Advanced Maryland Automatic Network Disk Archiver — улучшенный автоматический архиватор сетевых дисков из Мэриленд) является системой резервного копирования, которая позволяет администратору настроить один главный сервер резервного копирования большого количества сетевых хостов на ленточные накопители или оптические носители. AMANDA использует дамп данных и / или GNU tar и может выполнять резервное копирование большого числа рабочих станций, работающих под различными версиями Unix.
rsync
rsync является утилитой с открытым исходным кодом, которая выполняет синхронизацию файлов и директориев, расположенных в двух различных местах, причем когда возможно, для минимизации передаваемых данных используется специальная схема кодирования.
Важной особенностью Rsync, которую не найти в большинстве других программ / протоколов является то, что при зеркалировании в каждом направлении происходит только однократная передача данных.
Rsync может копировать или отображать содержимое директория и копировать файлы, дополнительно используя сжатие и рекурсию.
FlyBack
FlyBack базируется на использовании Rsync и является приблизительной моделью Apple Time Machine. Как и многие утилиты резервного копирования, базирующиеся на Rsync, пакет использует инкрементные резервные копии файлов, которые позже могут использоваться для восстановления.
FlyBack предоставляет хронологический взгляд на файловую систему, что делает возможным просматривать или искать в резервных копиях даже отдельные файлы.
Flyback предоставляется пользователю в виде стандартного файл менеджера, учитывающей особенности конкретной файловой системы, но с дополнительными возможностями двигаться во времени вперед или назад.
BackupPC
BackupPC это пакет программ резервного копирования вида “диск в диск”, который рассматривается как один из самых популярных бесплатных пакетов резервного копирования с открытым исходным кодом.
В нем есть веб-интерфейс и нет необходимости иметь клиентское приложение, поскольку сервер сам является клиентом для нескольких протоколов, которые обрабатываются родными сервисами клиентской ОС. BackupPC использует комбинацию жестких связей с тем, чтобы уменьшить общее дисковое пространство, используемое для файлов.
В первой полной резервной копии каждый файл сохраняется поностью, причем возможно дополнительное сжатие, а затем выполняются сравнения. Все аналогичные файлы жесткого связаны между собой и для них используется только одна дополнительная точка входа в директорий.
Areca Backup
Areca Backup является персональной программой резервного копирования файлов, написанной на Java. Она включает в себя движок резервного копирования, графический пользовательский интерфейс и интерфейс командной строки.
Пакет спроектирован так, чтобы быть как можно проще и чтобы настройка не требовала редактирования сложных конфигурационных файлов.
Кроме того, он гибок, поскольку позволяет использовать дополнительные режимы резервного копирования (например, резервное копирование изменений), либо просто создать “базовую” копию ваших файлов с исходным кодом, причем как в виде стандартного директория или в виде zip архива (который можно прочитать с помощью WinZip или других архиваторов). Areca Backup также позволит вам отслеживать содержимое ваших архивов и конкретных файлов. Вы можете отслеживать различные версии конкретного файла, просматривать архивы, восстанавливать или просматривать определенные файлы, а также сливать вместе наборы архивов.
DirSync Pro
DirSync Pro (Directory Синхронизация Pro – профессиональная синхронизация директориев), как это описано на веб-сайте этого проекта, является небольшой, но мощной утилитой синхронизации файлов и директорий.
Утилита может использоваться для синхронизации содержимого одного или рекурсивно нескольких директориев.
DirSync Pro предлагает графический пользовательский интерфейс, с помощью которого пользователь может управлять несколькими задачами синхронизации, при этом вы также можете управлять этой утилитой из командной строки, что делает ее очень гибкой для работы в пакетных файлах.
Она поддерживает синхронизацию локальных директориев, но не позволяет выполнять синхронизацию данных через FTP. DirSync Pro является абсолютно автономной и работает только в своем собственном директории, и, поэтому, она является абсолютно портабельной.
luckyBackup
luckyBackup это быстрое и надежное бесплатное приложение резервного копирования, которая имеет пользовательский графический интерфейс (GUI) на основе кроссплатферменной библиотеки Qt и, по своей сути, не консольным или веб приложением, как многие клиентские приложения из нашего списка программ резервного копирования.
Его графический интерфейс уже переведен на многие языки и приложение отличается тем, что оно присутствует непосредственно в репозитариях всех основных дистрибутивов Linux, включая Debian, Ubuntu, OpenSUSE, Fedora, Mandriva, Arch, Slackware и Gentoo.
luckyBackup можно использовать совместно с различными средствами синхронизации и копирования, rsync, BackupPC, rdiff-backup и некоторыми другими.
Partimage
Partimage является бесплатной программой резервного копирования дисков с открытым исходным кодом. Она может хранить в образе диска разделы диска во множестве форматов. С помощью Partimage копии разделов могут передаваться по сети, либо можно использовать Samba / NFS (Network File Systems).
Это позволяет выполнять восстановление разделов жесткого диска после аварийной ситуации. Помимо использования программы в среде обычной системы, Partimage может быть загружена с живого диска SystemRescueCd как автономно действующая программа, что полезно в случае, когда не удается запустить операционную систему.
В состав SystemRescueCd программы восстановления данных для Linux, которые вам могут потребоваться.
Mondo Rescue
Mondo Rescue является надежным и бесплатным решением для аварийного восстановления данных. Пакет создает резервные копии Linux сервера или рабочей станции на ленточном носителе, CD-R, CD-RW, DVD-R (W), DVD + R (W), NFS или в разделе жесткого диска.
Mondo Rescue поддерживает несколько файловых систем, в том числе LVM 1/2, RAID, ext2, ext3, ext4, JFS, XFS, ReiserFS, VFAT и может легко поддерживать дополнительные файловые системы.
Он также предлагает поддержку программного RAID массива, а также работу с большим количеством аппаратных контроллеров RAID. Mondo работает на всех основных дистрибутивах Linux, таких как Ubuntu, RedHat, SuSE, Mandriva, Debian и Gentoo.
Тем не менее, если необходимо, то вы можете использовать его для резервного копирования не “родных” для Linux разделов, таких как NTFS.
tar
tar является файловым архиватором, который предназначен для хранения файлов в архивном файле, известном как tarfile, и извлечения их оттуда. Tarfile может располагаться на ленточном накопителе, но в последнее время общепринято сохранять tarfile в виде обычного файла.
Архиватор первоначально был создан для записи непосредственно на устройства последовательного ввода / вывода с целью резервного копирования на ленту.
Но в настоящее время он используется главным образом для сбора многих файлов в один большой файл, используемый в качестве дистрибутива или архива, сохраняя при этом информацию о файловой системе, такую как права пользователей и групп, даты создания и изменения, и информацию о структуре директориев.
rus-linux.net
Источник: https://ualinux.com/en/it-blog/linux-programmy-dlya-rezervnogo-kopirovaniya
Краткий обзор open source средств резервного копирования
Средства для резервного копирования информации можно разделить на несколько категорий:
— Для домашнего/офисного применения (резервирование важных документов, фотографий и пр. на NAS либо в облако);
— Для средних и крупных (offline) предприятий (резервирование важных документов, отчетности, баз данных и пр.
как на серверах так и на рабочих станциях сотрудников);
— Для малых веб-проектов (резервирование файлов и баз данных с хостинговой площадки либо VPS/VDS на удаленный хост (или наоборот));
— Для крупных веб-проектов с распределенной архитектурой (почти то же самое, что и на offline-предприятиях только с учетом работы в глобальной сети, а не локальной, и как правило с использование open source средств).
С программными продуктами для дома и офиса все достаточно просто есть масса решений как открытых так и проприетарных, от cmd/bash скриптов до решений известных производителей ПО.
В enterprise секторе все достаточно скучно есть масса программных продуктов которые давно и успешно работают на многих предприятиях, в крупных банках и пр, рекламировать никого не будем. Многие их этих продуктов хорошо упростили жизнь системных администраторов, за достаточно «скромные деньги» по меркам некоторых предприятий.
В данной статье более подробно рассмотрим open source решения для резервного копирования веб-проектов разного масштаба, а также проведем тест на скорость резервирования файлов.
Статья будет полезна веб-мастерам, небольшим веб-студиям, ну и возможно даже бывалый админ найдет здесь что-то полезное.
Что нужно для резервирования небольшого сайта или блога, или нескольких сайтов, например с VPS-ки на которой дискового пространства впритык?
Напрашивается резервирование на удаленный хост. Т.е. чтобы сэкономить драгоценное место на вашем хостинге или VPS, вы можете подключаться, например со своего домашнего/офисного компьютера (возможно у вас есть NAS), по протоколам ftp или sftp, вручную или по расписанию забирать файлики и бережно складывать их каком-то надежном месте. Сойдет любой клиент ftp или sftp, хороший вариант rsync.
С Rsync выглядит это примерно так:
rsync -avzPch [email protected]:/path/to/copy /path/to/local/storage
И это вроде бы неплохо, но что если нужно хранить несколько версий бекапов БД? Или по каким-то причинам понадобилось делать инкрементальные копии, а еще бы неплохо и шифрование добавить. Можно немножко посидеть и сделать хороший велосипед скрипт под свои нужды (например наш rsync-backup), либо взять что-то из готовых утилит.
Рассмотрим несколько утилит которые подойдут для различных случаев применения, в частности и для случая описанного выше.
Duplicity
Duplicity консольная утилита для резервного копирования с достаточно широкими возможностями.
Существует несколько графических оболочек для Duplicity — Deja-dup для среды Gnome и test-drive для KDE. Также существует консольная обертка duply.
Duplicity производит бекап в зашифрованные тома в tar-формате локально или на удаленный хост. Делать инкрементальные записи файлов позволяет библиотека librsync, для компрессии используется gzip и gpg делает шифрование.
Конфигурационного файла нет. Автоматизировать процесс резервирования придется самому.
Примеры использования:
Резервирование локальной папки на удаленный хост
duplicity /usr scp://host.net/target_dir
Резервирование с удаленного хоста в локальную папку
duplicity sftp://[email protected]/var/www /home/backup/var/www
Восстановление
duplicity restore /home/backup/var/www sftp://[email protected]/var/www
Про Duplicity уже были статьи на Хабре, поэтому не будем заострять на ней внимание.
Rsnapshot
Про rsnapshot также не мало сказано на Хабре, тут и тут. А здесь еще хорошая статья. Rsnapshot в целом, хороший инструмент для создания инкрементальных бекапов (снапшотов). Написан на perl, использует rsync для копирования файлов. Достаточно быстрый (быстрее rdiff-backup) и неплохо экономит место на диске за счет жестких ссылок.
Умеет делать pre и post-backup операции, не умеет (без костылей) шифровать и делать бекап на удаленный хост. Файлы хранятся в первозданном виде — легко восстанавливать. Достаточно удобно организовано конфигурирование. Поддерживает несколько временных уровней резервирования (дневной, недельный, месячный).
Есть достаточно активное сообщество.
После того как вы пропишете в конфиге необходимые строки (что бекапить и куда), можно запустить бекап:
rsnapshot -v hourly
По умолчанию будет храниться несколько ежечасных и дневных снапшотов. От прочих утилит Rsnapshot отличается тем что он из коробки автоматизирован (актуально для Debian/Ubuntu), т.е. в крон пропишутся необходимые строки, а в конфиге прописано резервирование каталогов «/home», «/etc», «/usr/local»
Rdiff-backup
Rdiff-backup очень похож на Rsnapshot, но в отличии от него написан на Python и использует библиотеку librsync для передачи данных. Умеет копировать файлы на удаленный хост, чем кстати мы довольно успешно пользовались и кое где еще пользуемся.
Также можно делать бекап с удаленного хоста, но предварительно нужно установить там Rdiff-backup.
Хранит информацию об изменениях файлов (дельты) в сжатом виде, хорошо для больших файлов, позволяет экономить место на диске даже по сравнению с rsnapshot.
Метаданные (права, даты, владелец) хранятся в отдельных файлах.
Запуск бекапа производится из консоли:
rdiff-backup remote.host::/home/web/sites/ /home/backup/rdiff/
Наличие конфигурационного файла не предполагается. Автоматизировать придется самому.
Obnam
Obnam — открытое клиент-серверное приложение для резервного копирования, код программы написан на языке Python для передачи данных используется протокол SSH. Может эксплуатироваться в двух видах:
— Push резервирование с локального хоста на удаленный сервер на котором работает демон Obnam.
— Pull демон сам забирает файлы с удаленных хостов по протоколу ssh. В этом случае клиент Obnam не нужен.
Умеет делать снапшоты, дедупликацию и шифрование GnuPG. Резервные копии файлов хранятся в томах. Метаданные хранятся в отдельных файлах. Восстановление производится через консоль.
Небольшая выдержка из описания на Opennet (https://opennet.ru/opennews/art.shtml?num=39323):
«Предлагаемый в Obnam подход к резервному копированию нацелен на достижение трёх целей: обеспечение высокой эффективности хранения, простоты использования и безопасности. Эффективность хранения достигается благодаря размещению резервных копий в специальном репозитории, данные в котором хранятся в оптимальном представлении с использованием дедупликации. В одном репозитории могут храниться бэкапы разных клиентов и серверов. При этом объединение дубликатов осуществляется для всех хранимых бэкапов, независимо от их типа, времени создания и источника резервной копии. Для проверки целостности репозитория и его восстановления после сбоя предоставляется специальный вариант утилиты fsck.
Если на группе серверов используется одинаковая операционная система, то в репозитории будет сохранена только одна копия повторяющихся файлов, что позволяет существенно сэкономить дисковое пространство при организации резервного копирования большого числа типовых систем, например, виртуальных окружений.
Репозиторий для хранения резервных копий может быть размещён как на локальном диске, так и на внешних серверах (для создания сервера для хранения резервных копий не требуется установка дополнительных программ, достаточно доступа по SFTP).
Возможен доступ к резервным копиям через монтирование виртуального раздела при помощи специально подготовленного FUSE-модуля.»
Все это хорошо, НО для копирования на удаленный хост используется scp со всеми вытекающими.
Bacula
Bacula — кроссплатформенное клиент-серверное программное обеспечение, позволяющее управлять резервным копированием, восстановлением, и проверкой данных по сети для компьютеров и операционных систем различных типов. На данный момент Bacula можно использовать практически на любых unix-подобных системах (Linux (включая zSeries), NetBSD, FreeBSD, OpenBSD, Solaris, HP-UX, Tru64, IRIX, Mac OS X) и на Microsoft Windows.
Bacula также может выполняться полностью на единственном компьютере или, распределённо, на нескольких, и может записывать резервные копии на различные типы носителей, включая ленты, ленточные библиотеки (autochangers/libraries) и диски.
Bacula — это сетевая клиент-серверная программа для резервного копирования, архивирования и восстановления.
Предлагая широкие возможности для управления хранилищами данных, облегчает поиск и восстановление потерянных или повреждённых файлов.
Благодаря модульной структуре, Bacula масштабируется и может работать как на маленьких так и на крупных системах, состоящих из сотен компьютеров, расположенных в большой сети.
К Bacula имеются GUI и веб-интерфейсы (Almir, Webmin) различной степени сложности.
Bacula это надежная проверенная временем система резервного копирования в том числе хорошо зарекомендовавшая себя на многих крупных предприятиях. От Obnam принципиально Bacula отличается схемой работы.
В случае варианта клиент-сервер Bacula будет являться 100% централизованной системой. Также необходимо наличие клиентского приложения на хосте который нужно бекапить. На сервере работают одновременно три демона SD, FD.
DIR — Storage Daemon, File Daemon и Director соответственно. Нетрудно догадаться кто за что отвечает.
Резервные копии файлов Bacula хранит в томах. Метаданные хранятся в БД (SQLite, MySQL, PostgreSQL) Восстановление производится с помощью консольной утилиты либо посредством графической оболочки. Процесс восстановления через консоль, прямо скажем, не самый удобный.
Цифры
Я решил проверить скорость резервирования небольшой папки (626M) с несколькими сайтами на WP.
Для этого я даже не поленился развернуть и настроить весь этот софт. 🙂
Тест состоит из двух частей:
1. Участники Duplicity, Rsync, Rsnapshot, Rdiff-Backup. Копируем с удаленного сервера на домашний компьютер, при этом поскольку Rsnapshot не умеет делать remote-бекап, то он и Rdiff-backup (для сравнения) будут работать домашней машине, т.е. будут тянуть (pull) с файлы с сервера, а остальные наоборот, будут толкать (push) на домашнюю машину.
Все утилиты запускались с минимально необходимыми опциями.
Rsync
rsync -az /home/web/sites/ home.host:/home/backup/rsync
Full backup
Время выполнения:real 4m23.179s user 0m31.963s sys 0m2.165s
Incremental
Время выполнения
real 0m49.883s user 0m5.637s sys 0m0.562s
Занимаемое место:
626M /home/backup/duplicity/
Duplicity
duplicity full /home/web/sites/ rsync://home.host//home/backup/duplicity
Full backup
Время выполнения:real 5m52.179s user 0m46.963s sys 0m4.165s
Incremental
Время выполнения
real 0m49.883s user 0m5.637s sys 0m0.562s
Занимаемое место:
450M /home/backup/duplicity/
Rsnapshot
rsnapshot -v hourly
Full backup
Время выполнения:real 4m23.192s user 0m32.892s sys 0m2.185s
Incremental
Время выполнения
real 0m5.266s user 0m0.423s sys 0m0.656s
Занимаемое место:
626M /home/tmp/backup/rsnap/
Rdiff-backup
rdiff-backup remote.host::/home/web/sites/ /home/backup/rdiff/
Full backup
Время выполнения:real 7m26.315s user 0m14.341s sys 0m3.661s
Incremental
Время выполнения
real 0m25.344s user 0m5.441s sys 0m0.060s
Занимаемое место:
638M /home/backup/rsnap/
Результаты достаточно предсказуемы. Самый быстрый оказался Rsync, практически такой же результат у Rsnapshot. Duplicity немного медленней но меньше занимает места на диске. Rdiff-backup ожидаемо хуже.
2. Теперь интересное. Проверим как работают Obnam и Bacula. Оба решения достаточно универсальны плюс имеют некоторые сходства. Посмотрим кто шустрее.
Obnam
Первый раз я запустил копирование с удаленного хоста на свой домашний, ждать пришлось долго:
obnam backup —repository sftp://home.host/home/backup/obnam/ /home/web/sites/
Full backup
Backed up 23919 files, uploaded 489.7 MiB in 1h42m16s at 81.7 KiB/s average speed
Время выполнения:real 102m16.469s user 1m23.161s sys 0m10.428s
obnam backup —repository sftp://home.host/home/backup/obnam/ /home/web/sites/
Incremental
Backed up 23919 files, uploaded 0.0 B in 3m8s at 0.0 B/s average speed
Время выполнения
real 3m8.230s user 0m4.593s sys 0m0.389s
Занимаемое место:
544M /home/tmp/backup/rsnap/
Не очень хороший результат как мне кажется, хотя понятный.
Попробуем второй раз, но уже на соседний сервер по гигабитной сети и добавим компрессию.
obnam backup —compress-with=deflate —repository sftp://remote.host/home/backup/obnam/ /home/web/sites/
Full backup
Backed up 23919 files, uploaded 489.7 MiB in 2m15s at 3.
6 MiB/s average speed
Время выполнения:
real 2m15.251s user 0m55.235s sys 0m6.299s
obnam backup —compress-with=deflate —repository sftp://remote.host/home/backup/obnam/ /home/web/sites/
Incremental
Backed up 23919 files, uploaded 0.0 B in 8s at 0.0 B/s average speed
Время выполнения
real 0m7.823s user 0m4.053s sys 0m0.253s
Занимаемое место:
434M /home/tmp/backup/rsnap/
Так побыстрее и размер бекапа поменьше. Шифрование я не стал пробовать, может быть позже, если будет время.
Bacula
Источник: https://csslike.me/kratkij-obzor-open-source-sredstv-rezervnogo-kopirovaniya/