Duplicity не только архивирует данные и загружает их на локальный или удаленный файловый сервер, но еще и шифрует их при помощи утилиты GnuPG, обеспечивая тем самым дополнительную защиту. Duplicity поддерживает различные протоколы для соединения с файловым сервером: SSH/SCP, FTP, HSI, WebDAV, Tahoe-LAFS и Amazon S3. С поддержкой OpenStack Swift дело обстоит несколько сложнее.
На сегодняшний день пакет Duplicity доступен почти во всех дистрибутивах. Не только в Debian-based. В этом туториале мы рассмотрим полную установку и настройку этого пакета. Перейдем сразу к делу!
Установка из репозитория
sudo apt-get install duplicity
или, если хотите от пользователя root, то пишем без «sudo»
apt-get install duplicity
После чего, терминал покажет это:
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 http://mirrors.kernel.org/debian/ stable/main librsync1 amd64 0.9.7-9 [72.1 kB] Get:2 http://mirrors.kernel.org/debian/ stable/main python-gnupginterface all 0.3.2-9.1 [21.0 kB] Get:3 http://mirrors.kernel.org/debian/ stable/main duplicity amd64 0.6.18-3 [309 kB] Get:4 http://mirrors.kernel.org/debian/ stable/main python-crypto amd64 2.6-4 [524 kB] Get:5 http://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 ... Это хороший знак, который означает, что загрузка и установка прошла успешно и терминал настраивает конфигурации по умолчанию. Как создать SSH ключь? Для автоматического запуска бэкапа, вы должны использовать соединение SSH, используя при этом ключ SSH. Используйте SSH-keygen команду для создания ключа SSH: ssh-keygen -t rsa Настройка фразы-пароля для SSH ключа (РЕКОМЕНДУЕТСЯ) Если вы "параноик" и безумно переживаете за свою безопаснось, то вам следует так же установить фразовый пароль для SSH ключа, который вы будете вводить в случае чего. Для этого будем использовать keychain. Итак, в терминале пишем: sudo apt-get install keychain Если есть необходимость редактировать bash_profile , то введите команду: vi $HOME/.bash_profile или nano $HOME/.bash_profile Как создать GPG ключи? Установим для начала GNU персонального защитникаю Для этого в терминале пишем: apt-get install gnupg или (если вы НЕ от root'a) sudo apt-get install gnupg Для создание самого GPG ключа, пишем команду: gpg --gen-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 Чтобы просмотреть список GPG ключей, пишем команду: gpg --list-keys Увидим вот такую картину: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) <[email protected]>" 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.
/root/.gnupg/pubring.gpg ------------------------ pub 4096R/4AABBCC7 2013-10-04 uid Home Nas Server (Home Nas Server Backup)sub 4096R/12345678 2013-10-04 Вам нужно запомнить, а лучше записать ключ: 4AABBCC7 (у вас возможно будет другой!) Как делать бэкап файлов?
Для примера будем использовать scp , чтобы бэкапнуть папку /home/username/ в ~/backups на cloud.example.com системе. Для этого пишем команду: duplicity /home/username/ scp://[email protected]/backups Исключаем файлы из бэкапа Следующая команда будет бэкапить ( / ) всю файловую систему, но исключать папки /tmp, /proc, /nas, /jalis, и /mnt из самого бэкапа. Для этого пишем так: duplicity --exclude /tmp/ --exclude /proc/ --exclude /nas/ \ --exclude /jails/ --exclude /mnt/ / scp://[email protected]/backups Включаем файлы в бэкап Эта команда будет бэкапить только папки /home/, /root/, /etc/, и /var/spool/cron/ директории под root ( / ), использую опцию --include. Для этого пишем: duplicity --include /home/ --include /root --include /etc/ \ --include /var/spool/cron/ --exclude '**' / scp://[email protected]/backups Полный бэкап duplicity командой Для того, чтобы сделать полный бэкап (зашифрованный), вводим: duplicity full --encrypt-key="4AABBCC7" /home/username/ scp://[email protected]/backups , где "4AABBCC7" - это код, который я просил запомнить выше! Инкрементный бэкап командой duplicity Для того, чтобы сделать бэкап ( инкрементный ) и зашифрованный, воодим: duplicity incr --encrypt-key="4AABBCC7" /home/username/ scp://[email protected]/backups Список файлов содержащихся в архиве Для того, чтобы увидеть весь список файлов, которые были сделать в бэкапе. введите: duplicity list-current-files --encrypt-key="4AABBCC7" scp://[email protected]/backups Проверка бэкапа командой duplicity Вы можете проверить свой бэкап использую команду: duplicity verify --encrypt-key="4AABBCC7" scp://[email protected]/backups /home/username Ротация бэкапов командой duplicity Вы можете удалить все бэкапы, которые старше заданного числа. Допустим, что мы хотим сейчас удалить все файлы, старше 60 дней. Для этого пишем: duplicity remove-older-than 60D --encrypt-key="4AABBCC7" --force scp://[email protected]/backups Число всегда должно быть больше, чем 0. Значение 1 будет означать, что всего один бэкап будет сохранен, а остальные удалены. duplicity remove-all-but-n-full 10 --encrypt-key="4AABBCC7" --force scp://[email protected]/backups Восстановление последнего сделанного бэкапа, использую duplicity Представьте, что вы случайно удалили один из бэкапов и его нужно вернуть туда, где он был. Для этого пишем: mkdir /home/username/ duplicity --encrypt-key="4AABBCC7" scp://[email protected]/backups /home/username/ Выборочное восстановление из бэкапа Если вы не хотите восстанавливать все подряд, а только отдельный файл, то выход есть тоже. Пишем команду: duplicity -t 7D --file-to-restore="Documents/resume.doc" --encrypt-key="4AABBCC7" scp://[email protected]/backups /home/username/Documents Очищаем от всех бэкапов Вы можете удалить все необходимые бэкапы и полностью очистить директорию. Пишем команду в терминале: duplicity cleanup --force --encrypt-key="4AABBCC7" scp://[email protected]/backups Собираем все воедино! Скрипт bash, который все делает сам Простой shell скрипт:
#!/bin/bash # A simple backup script wrapper for duplicity. # ----------------------------------------------------- ## Define VARS ## _gpg_key='4AABBCC7' _target='scp://[email protected]/backups' _duplicity='/usr/bin/duplicity' _src='/home/username/' ## 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/username/ ## ## Note: full backup if older than 60 day else do incremental backup ### $_duplicity ${_src} --encrypt-key="${_gpg_key}" --full-if-older-than 60D ${_target}
Вот и все! Удачи! Если есть какие-то вопросы, то пишите в комментах!
Туториал сделан специально для портала LinuxMD.net
При копировании материала не забывайте указывать ссылку на источник!
Источник http://www.linuxmd.net/instruction/199-ustanovka-i-nastrojka-duplicity-na-debian-based-distributivakh-tutorial