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

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

Перейти к: навигация, поиск

Содержание

Что такое Duplicity

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

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

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

Установка Duplicity

Если 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

где:

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

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

chown root: /root/scripts/backup_etc.sh
chmod 700 /root/scripts/backup_etc.sh

Использования графической оболочки для duplicity

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

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

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

su -c 'yum install dejadup'

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

Полезные приемы

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

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

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

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

Дополнительные материалы