Установка и настройка 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

После чего, терминал покажет это:

<cite>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 ...</cite>

Это хороший знак, который означает, что загрузка и установка прошла успешно и терминал настраивает конфигурации по умолчанию.

<span style="font-size: small;"><strong><span style="font-size: medium;">Как создать SSH ключь?</span> </strong>

</span>Для автоматического запуска бэкапа, вы должны использовать соединение SSH, используя при этом ключ SSH.
Используйте SSH-keygen команду для создания ключа SSH:

<strong><cite>ssh-keygen -t rsa</cite></strong><span style="font-size: small;">

<span style="font-size: medium;"><strong>Настройка фразы-пароля для SSH ключа (РЕКОМЕНДУЕТСЯ)</strong></span></span>

Если вы "параноик" и безумно переживаете за свою безопаснось, то вам следует так же установить фразовый 
пароль для SSH ключа, который вы будете вводить в случае чего. 
Для этого будем использовать keychain. 
Итак, в терминале пишем:

<strong><cite>sudo apt-get install keychain</cite></strong>

Если есть необходимость редактировать bash_profile , то введите команду:

<strong><cite>vi $HOME/.bash_profile</cite></strong>

или

<strong><cite>nano $HOME/.bash_profile</cite></strong>

<span style="font-size: medium;"><strong>Как создать GPG ключи?</strong></span>

Установим для начала GNU персонального защитникаю Для этого в терминале пишем:

<strong><cite>apt-get install gnupg</cite></strong>

или (если вы НЕ от root'a)

<strong><cite>sudo apt-get install gnupg</cite></strong>

Для создание самого GPG ключа, пишем команду:

<strong><cite>gpg --gen-key</cite></strong>

Тем самым генирируем ключ.

Вывод должен быть такой:

<cite>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
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>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) <<a href="mailto:heinrichh@duesseldorf.de">heinrichh@duesseldorf.de</a>>"
 
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) <root@nas01>"
 
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.</cite>

Чтобы просмотреть список GPG ключей, пишем команду:

<strong><cite>gpg --list-keys</cite></strong>

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

<cite>/root/.gnupg/pubring.gpg
------------------------
pub   4096R/4AABBCC7 2013-10-04
uid                  Home Nas Server (Home Nas Server Backup) <root@nas01>
sub   4096R/12345678 2013-10-04</cite>

Вам нужно запомнить, а лучше записать ключ: 4AABBCC7 (у вас возможно будет другой!)

<span style="font-size: medium;"><strong>Как делать бэкап файлов?</strong></span>
Для примера будем использовать <strong>scp </strong>, чтобы бэкапнуть папку /home/username/ в ~/backups на cloud.example.com 
системе. Для этого пишем команду:

<strong><cite>duplicity /home/username/ scp://<a href="mailto:user@cloud.example.com">user@cloud.example.com</a>/backups</cite></strong>

<span style="font-size: medium;"><strong>Исключаем файлы из бэкапа</strong></span>

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

<strong><cite>duplicity --exclude /tmp/ --exclude /proc/ --exclude /nas/ \
--exclude /jails/ --exclude /mnt/ / scp://<a href="mailto:user@cloud.example.com">user@cloud.example.com</a>/backups</cite></strong>

<span style="font-size: medium;"><strong>Включаем файлы в бэкап</strong></span>

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

<strong><cite>duplicity --include /home/ --include /root --include /etc/ \
--include /var/spool/cron/ --exclude '**' / scp://<a href="mailto:user@cloud.example.com">user@cloud.example.com</a>/backups</cite></strong>

<span style="font-size: medium;"><strong>Полный бэкап duplicity командой</strong></span>

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

<strong><cite>duplicity full --encrypt-key="4AABBCC7" /home/username/ 
scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups</cite></strong>

, где "<span style="line-height: 1.3em;">4AABBCC7" - это код, который я просил запомнить выше!

<span style="font-size: medium;"><strong>Инкрементный бэкап командой duplicity</strong></span>

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

<strong><cite>duplicity incr --encrypt-key="4AABBCC7" /home/username/ 
scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups</cite></strong>

<span style="font-size: medium;"><strong>Список файлов содержащихся в архиве</strong></span>

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

<strong><cite>duplicity list-current-files --encrypt-key="4AABBCC7" 
scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups</cite></strong>

<span style="font-size: medium;"><strong>Проверка бэкапа командой duplicity</strong></span>

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

<strong><cite>duplicity verify --encrypt-key="4AABBCC7" 
scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups /home/username</cite></strong>

<span style="font-size: medium;"><strong>Ротация бэкапов командой duplicity</strong></span>

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

<strong><cite>duplicity remove-older-than 60D --encrypt-key="4AABBCC7" 
--force scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups</cite></strong>

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

<strong><cite>duplicity remove-all-but-n-full 10 --encrypt-key="4AABBCC7" 
--force scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups</cite></strong>

<span style="font-size: medium;"><strong>Восстановление последнего сделанного бэкапа, использую duplicity</strong></span>

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

<strong><cite>mkdir /home/username/
</cite></strong><strong><cite>duplicity --encrypt-key="4AABBCC7" 
scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups /home/username/</cite></strong>

<span style="font-size: medium;"><strong>Выборочное восстановление из бэкапа</strong></span>

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

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

<span style="font-size: medium;"><strong>Очищаем от всех бэкапов</strong></span>

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

<strong><cite>duplicity cleanup --force --encrypt-key="4AABBCC7" 
scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/backups</cite></strong>

<span style="font-size: medium;"><strong>Собираем все воедино! Скрипт bash, который все делает сам</strong></span>

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

</span>
<strong><cite>#!/bin/bash
# A simple backup script wrapper for duplicity. 
# -----------------------------------------------------
 
## Define VARS ##
_gpg_key='4AABBCC7'
_target='scp://<a href="mailto:userNameHere@cloud.example.com">userNameHere@cloud.example.com</a>/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}</cite></strong>
<span style="line-height: 1.3em;">
Вот и все! Удачи! Если есть какие-то вопросы, то пишите в комментах!

<span style="font-size: small;">Туториал сделан специально для портала LinuxMD.net</span>

<span style="font-size: small;"><strong>При копировании материала не забывайте указывать ссылку на источник!</strong></span>
 Источник http://www.linuxmd.net/instruction/199-ustanovka-i-nastrojka-duplicity-na-debian-based-distributivakh-tutorial

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

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

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

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