Установка и настройка Duplicity на Debian-based дистрибутивах (ТУТОРИАЛ)

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
      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) <heinrichh@duesseldorf.de>"
 
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 ключей, пишем команду:

gpg --list-keys

Увидим вот такую картину:

/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://user@cloud.example.com/backups

Исключаем файлы из бэкапа

Следующая команда будет бэкапить ( / ) всю файловую систему, но исключать папки /tmp, /proc, /nas, /jalis, и 
/mnt из самого бэкапа. Для этого пишем так:

duplicity --exclude /tmp/ --exclude /proc/ --exclude /nas/ \
--exclude /jails/ --exclude /mnt/ / scp://user@cloud.example.com/backups

Включаем файлы в бэкап

Эта команда будет бэкапить только папки /home/, /root/, /etc/, и /var/spool/cron/ директории под root ( / ), 
использую опцию --include. Для этого пишем:

duplicity --include /home/ --include /root --include /etc/ \
--include /var/spool/cron/ --exclude '**' / scp://user@cloud.example.com/backups

Полный бэкап duplicity командой

Для того, чтобы сделать полный бэкап (зашифрованный), вводим:

duplicity full --encrypt-key="4AABBCC7" /home/username/ 
scp://userNameHere@cloud.example.com/backups

, где "4AABBCC7" - это код, который я просил запомнить выше!

Инкрементный бэкап командой duplicity

Для того, чтобы сделать бэкап ( инкрементный ) и зашифрованный, воодим:

duplicity incr --encrypt-key="4AABBCC7" /home/username/ 
scp://userNameHere@cloud.example.com/backups

Список файлов содержащихся в архиве

Для того, чтобы увидеть весь список файлов, которые были сделать в бэкапе. введите:

duplicity list-current-files --encrypt-key="4AABBCC7" 
scp://userNameHere@cloud.example.com/backups

Проверка бэкапа командой duplicity

Вы можете проверить свой бэкап использую команду:

duplicity verify --encrypt-key="4AABBCC7" 
scp://userNameHere@cloud.example.com/backups /home/username

Ротация бэкапов командой duplicity

Вы можете удалить все бэкапы, которые старше заданного числа. Допустим, что мы хотим сейчас удалить все файлы, старше 60 дней. 
Для этого пишем:

duplicity remove-older-than 60D --encrypt-key="4AABBCC7" 
--force scp://userNameHere@cloud.example.com/backups

Число всегда должно быть больше, чем 0. Значение 1 будет означать, что всего один бэкап будет сохранен, а остальные удалены.

duplicity remove-all-but-n-full 10 --encrypt-key="4AABBCC7" 
--force scp://userNameHere@cloud.example.com/backups

Восстановление последнего сделанного бэкапа, использую duplicity

Представьте, что вы случайно удалили один из бэкапов и его нужно вернуть туда, где он был. Для этого пишем:

mkdir /home/username/
duplicity --encrypt-key="4AABBCC7" 
scp://userNameHere@cloud.example.com/backups /home/username/

Выборочное восстановление из бэкапа

Если вы не хотите восстанавливать все подряд, а только отдельный файл, то выход есть тоже. Пишем команду:

duplicity -t 7D --file-to-restore="Documents/resume.doc" --encrypt-key="4AABBCC7" 
scp://userNameHere@cloud.example.com/backups /home/username/Documents

Очищаем от всех бэкапов

Вы можете удалить все необходимые бэкапы и полностью очистить директорию. Пишем команду в терминале:

duplicity cleanup --force --encrypt-key="4AABBCC7" 
scp://userNameHere@cloud.example.com/backups

Собираем все воедино! Скрипт bash, который все делает сам

Простой shell скрипт:

#!/bin/bash
# A simple backup script wrapper for duplicity. 
# -----------------------------------------------------
 
## Define VARS ##
_gpg_key='4AABBCC7'
_target='scp://userNameHere@cloud.example.com/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

Запись опубликована в рубрике *CentOS, *Unix,*Linux. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91