GrabDuck

Резервное копирование пользовательских данных с помощью Duplicity — База знаний ...

:

Резервное копирование пользовательских данных с помощью Duplicity

Материал из База знаний проекта Russian Fedora

Duplicity сохранит вашу директорию в шифрованный том формата tar и загрузит его на локальный или удаленный файловый сервер. Так как duplicity использует библиотеку librsync то последующие архивы будут записывать только изменения с последнего резервного копирования и позволяет более эффективно использовать дисковое пространство и трафик. Также duplicity использует GnuPG для шифрования и / или подписи этих архивов, что защищает их от похищения и / или модификации.

Для соединения с файловым сервером Duplicity подерживает множество протоколов : ssh/scp, локальные файлы, rsync, ftp, HSI, WebDAV, Tahoe-LAFS, и Amazon S3.

Сейчас duplicity поддерживает : удаленные файлы, все разрешения UNIX, каталоги и символические ссылки ( кроме жестких ссылок ), fifos и файлы устройств.

Если duplicity у вас не установлен вы можете установить его командой :

su -c 'yum install duplicity -y'

Архивирование

ВНИМАНИЕ:
Если вы собираетесь создать резервную копию корневого каталога, не забудьте исключить файловую систему процессов ( --exclude /proc ), иначе можете получить ошибки.

Пример резервного копирования с использованием scp директории /home/me в директорию some_dir на компьютер other.host:

duplicity /home/me scp://uid@other.host/some_dir

Если создаете архив первый раз то это будет полная копия и при последующих запусках будут архивироваться только изменения. Чтобы снова создать полную копию используйте специальную команду full:

duplicity full /home/me scp://uid@other.host/some_dir

Duplicity может использовать несколько вариантов включить / исключить ( include / exclude ). Следующий пример создаст архив каталога root, но исключит из него каталоги /mnt, /tmp и /proc :

duplicity --exclude /mnt --exclude /tmp --exclude /proc / file:///usr/local/backup

Пример создания архива в локальном каталоге /usr/local/backup. Будут архивироваться только директории /home и /etc:

duplicity --include /home --include /etc --exclude '**' / file:///usr/local/backup

Просмотр статистики и проверка

Просмотр статистики архива:

duplicity collection-status scp://uid@other.host/some_dir

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

duplicity verify -v4 scp://uid@other.host/some_dir /home/me

Просмотр списка файлов в последней резервной копии:

duplicity list-current-files ftp://ftpuser@other.host/some_dir

Востановление файлов

ПРИМЕЧАНИЕ:
Невозможно востановить файл из архива если такой файл уже существует. Обычно файлы востанавливают с другим именем или в другую директорию.


Теперь если случайно удалили /home/me и хотите востановить эту директорию на момент последнего архивирования то выполните:

duplicity scp://uid@other.host/some_dir /home/me

Если хотите востановить только один файл ( или одну директорию ) Mail/article из директории /home/me, каким он был три дня назад то выполните :

duplicity -t 3D --file-to-restore Mail/article scp://uid@other.host/some_dir /home/me/article.t3D

Удаление старых архивов

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

duplicity remove-older-than 1Y --force ftp://ftpuser@other.host/some_dir

Пример автоматического сценария

Для архивации на ftp сервер, вы можете явно указать имя пользователя ftp а пароль для него можно указать в переменной среды FTP_PASSWORD, если же вы хотите создать полностью автоматический сценарий и поместить его в crontab то используйте дополнительно переменную среды PASSPHRASE.

Создайте в каталоге /etc/cron.d файл (например) duplicity, в котором укажите что скрипт архивации будет выполнятся раз в 24 часа, vi /etc/cron.d/duplicity

0 0 * * * /root/scripts/backup_etc.sh >>/var/log/duplicity/etc.log

Далее создайте сам файл архивации vi /root/scripts/backup_etc.sh

#!/bin/sh

export FTP_PASSWORD=ftppassword
export PASSPHRASE=gpgpassphrase
duplicity --full-if-older-than 1M /etc ftp://ftpuser@other.host/etc
duplicity remove-older-than 6M --force ftp://ftpuser@other.host/etc
unset PASSPHRASE
unset FTP_PASSWORD
exit 0

где:

  • --full-if-older-than 1M - сделать полное архивирование, если со дня последнего полного архивирования прошел 1 месяц;
  • remove-older-than 6M --force - удалить резервные копии старше, чем 6 месяцев.

ВНИМАНИЕ:
Сам скрипт архивации содержит пароли к ftp серверу и парольную фразу для gpg поэтому рекомендуется хорошо защить этот файл.

Установить соответствующего владельца и права на этот файл :

chown root: /root/scripts/backup_etc.sh
chmod 700 /root/scripts/backup_etc.sh
Для duplicity существует графическая оболочка Déjà Dup. Эта оболочка интегрирована в Gnome Desktop и если у вас русскоязычный интерфейс ищется по словам "Резервное копирование",

и в ней можно задать резервное копирование по расписанию.

Если у вас она не установлена то вы можете установить ее командой :

su -c 'yum install dejadup'

Возможности этой программы заявленные разработчиком:

  • восстановление из резервных копий
  • создание резервных копий по расписанию (автоматически), удаление устаревших копий по выбранному плану резервного сохранения

Перенос исходного каталога

Если перенесете каталог для архивирования, то обычным споcoбом не удастся продолжения архивирова, duplicity будет выходить с ошибкой : Backup source directory has changed. ( исходная директория была изменена ). Чтобы не создавать новый архив заново и продолжить существующий нужно в строке задания добавить ключ : --allow-source-mismatch

Выборочное востановление из Nautilus

Если Вы используйте Gnome, то в файловом менеджере Nautilus можно нажать на файле/папке правой клавишей мыши и выбрать в меню пункт : Восстановить из предыдущей версии ... и запустится программа Deja-Dup где сможете выбрать дату востановления.