Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия | Последняя версия Следующая версия справа и слева | ||
резервное_копирование_в_с_помощью_duply_duplicity [2015/07/25 18:15] admin |
резервное_копирование_в_с_помощью_duply_duplicity [2015/07/25 18:39] admin |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
Duply представляет собой shell скрипт, являющийся оберткой вокруг другого скрипта - duplicity. Не смотря на то, что сам по себе [[http://duplicity.nongnu.org/|duplicity]] является полноценным ПО для создания резервных копий, duply дополняет его функционал рядом полезных свойств, упрощающих работу с опциями командной строки для выполнения различных типовых операций. | Duply представляет собой shell скрипт, являющийся оберткой вокруг другого скрипта - duplicity. Не смотря на то, что сам по себе [[http://duplicity.nongnu.org/|duplicity]] является полноценным ПО для создания резервных копий, duply дополняет его функционал рядом полезных свойств, упрощающих работу с опциями командной строки для выполнения различных типовых операций. | ||
- | Резервные копии бывают полные и инкрементальные. Если с полной резервной копией все понятно: это просто полная копия всех данных, подлежащих резервированию, то инкрементальная копия означает, что в бэкапе содержится только список изменений относительно предыдущего бэкапа. Инкрементальное резервное копирование с одной стороны позволяет экономить место на дисках, но с другой стороны для восстановления данных вам потребуется не только последний инкрементальный бэкап, но и весь перечень всех предыдущих бэкапов вплоть до последнего полного. К счастью, предоставляемое нами облачное хранилище имеет 4х кратное резервирование всех хранимых данных, поэтому вероятность потерять какой-то из предыдущих бэкапов и из-за этого получить ситуацию, когда восстановить из бэкапа данные из-за аппаратного сбоя в хранилище не удается, практически не возможно. | + | Резервные копии бывают полные и инкрементальные. Если с полной резервной копией все понятно: это просто полная копия всех данных, подлежащих резервированию, то инкрементальная копия означает, что в бэкапе содержится только список изменений относительно предыдущего бэкапа. Инкрементальное резервное копирование с одной стороны позволяет экономить место на дисках, но с другой стороны для восстановления данных вам потребуется не только последний инкрементальный бэкап, но и весь перечень всех предыдущих бэкапов вплоть до последнего полного. |
+ | |||
+ | ====== Устанавливаем duplicity и duply ====== | ||
+ | |||
+ | <code> | ||
+ | apt-get install duply duplicity python-boto | ||
+ | </code> | ||
+ | |||
+ | ====== Конфигурируем duply ====== | ||
+ | |||
+ | Создадим пустой конфигурационный файл duply: | ||
+ | |||
+ | <code> | ||
+ | duply mybackup create | ||
+ | </code> | ||
+ | |||
+ | где mybackup - это название профиля, где будет описана схема будущего резервного копирования. Профиль будет создан в файле ~/.duply/mybackup/conf. | ||
+ | |||
+ | В файле /root/.duply/mybackup/conf, потребуется изменить строку TARGET в зависимости куда мы хотим сохранять архивы: | ||
+ | |||
+ | <code> | ||
+ | GPG_KEY='disabled' | ||
+ | TARGET='s3://xxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxx@s3.netangels.ru/uXXXXX-backup/uXXXXX-vmZZZZZ' | ||
+ | SOURCE='/' | ||
+ | MAX_AGE=20D | ||
+ | MAX_FULL_BACKUPS=3 | ||
+ | MAX_FULLBKP_AGE=1W | ||
+ | DUPL_PARAMS="$DUPL_PARAMS --full-if-older-than $MAX_FULLBKP_AGE --volsize $VOLSIZE --s3-multipart-chunk-size=15 " | ||
+ | VOLSIZE=50 | ||
+ | </code> | ||
+ | |||
+ | Параметры: | ||
+ | GPG_KEY - Можно включить если нужно шифровать данные. Нам это не требуется, так как это увеличивает нагрузку. | ||
+ | TARGET - Это метод путь куда будем сохранять с типом подключения | ||
+ | SOURCE - Начальная точка архивации | ||
+ | MAX_AGE - Количество дней хранения данных | ||
+ | MAX_FULL_BACKUPS - Количество полных резервных копий | ||
+ | MAX_FULLBKP_AGE - Максимальный возраст полных копий (в данном случае 1 неделя) | ||
+ | DUPL_PARAMS - строка из параметров выше | ||
+ | VOLSIZE - Сохранять резервные копии томами по указанное количество мегабайт (рекомендуется 50) | ||
+ | |||
+ | В файле /root/.duply/mybackup/exclude укажем какие каталоги не надо архивировать: | ||
+ | |||
+ | <code> | ||
+ | /dev | ||
+ | /proc | ||
+ | /sys | ||
+ | /tmp | ||
+ | /run | ||
+ | /lib/modules | ||
+ | </code> | ||
+ | |||
+ | В файле ''/root/.boto'' если используем s3 то пишем следующее: | ||
+ | |||
+ | <code> | ||
+ | [Boto] | ||
+ | host = s3.netangels.ru | ||
+ | port = 80 | ||
+ | is_secure = False | ||
+ | </code> | ||
+ | |||
+ | ====== Создание резервных копий ====== | ||
+ | |||
+ | При запуске duply следует иметь ввиду, что не смотря на то, что и duply, и duplicity переведены на русский язык, с локалью ru_RU.UTF-8 duplicity не дружит. Поэтому перед запуском duply необходимо сменить локаль на англоязычную: | ||
+ | |||
+ | <code> | ||
+ | export LANG=C; | ||
+ | /usr/bin/duply mybackup backup_purge --force | ||
+ | </code> | ||
+ | |||
+ | Поставим архивирование по расписанию на каждый день | ||
+ | |||
+ | Можно создать файл с root правами ''sudo nano /root/backup'' с содержимым: | ||
+ | |||
+ | <code> | ||
+ | #!/bin/bash | ||
+ | export LANG=C; /usr/bin/duply mybackup backup_purge --force | ||
+ | </code> | ||
+ | |||
+ | И запускать его, скажем, в 6 утра. Добавим это в cron так ''crontab -e'' | ||
+ | |||
+ | <code> | ||
+ | 0 6 * * * root /root/backup | ||
+ | </code> | ||
+ | |||
+ | ====== Просмотр состояния бэкапов ====== | ||
+ | |||
+ | <code> | ||
+ | $ export LANG=C; duply mybackup status | ||
+ | ... | ||
+ | Type of backup set: Time: Num volumes: | ||
+ | Full Tue Feb 25 12:24:20 2014 1 | ||
+ | Incremental Tue Feb 25 12:24:37 2014 1 | ||
+ | Incremental Wed Feb 26 05:28:01 2014 1 | ||
+ | Incremental Wed Feb 26 05:31:44 2014 1 | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | Здесь видно, что в наличии имеется 4 резервных копии: одна полная и 3 инкремента. | ||
+ | |||
+ | ====== Восстановление данных из резервной копии ====== | ||
+ | |||
+ | Восстановление состояния всей папки ''/var/www'' из последнего бэкапа (существующие данные будут перезаписаны): | ||
+ | |||
+ | <code> | ||
+ | export LANG=C; duply mybackup restore /var/www | ||
+ | </code> | ||
+ | |||
+ | Восстановить файл ''/var/www/index.html'' по состоянию 4х дневной давности в отдельный файл ''/tmp/restore.html'' (не перезаписывая текущий файл ''/var/www/index.html''): | ||
+ | |||
+ | <code> | ||
+ | export LANG=C; duply mybackup fetch var/www/index.html /tmp/restore.html 4D | ||
+ | </code> | ||
+ | |||
+ | Обратите внимание, что путь к файлу внутри бэкапа пишется без начального слэша (/). | ||
Подробнее о резервном копировании в облачное хранилище s3 по ссылке [[https://www.netangels.ru/support/cloud-storage/duplicity/]] | Подробнее о резервном копировании в облачное хранилище s3 по ссылке [[https://www.netangels.ru/support/cloud-storage/duplicity/]] |