Резервни копия с duplicity

от БАРЗИКТ Wiki
Направо към: навигация, търсене


Въведение

duplicity е лесен за използване инструмент за създаване на резервни копия (backup) под Ubuntu.

Инсталиране на duplicity

Инсталирането на duplicity може да се извърши чрез apt-get:

sudo apt-get install duplicity

Ако е необходимо да се използва FTP за съхранение и извличане на архивите е желателно да се инсталира инструмента NcFTP:

sudo apt-get install ncftp

Основни параметри на duplicity

duplicity [full|incremental] [options] source_dir target_url
duplicity [restore] [options] source_url target_dir
duplicity verify [options] source_url target_dir
duplicity collection-status [options] target_url
duplicity list-current-files [options] target_url
duplicity cleanup [options] target_url
duplicity remove-older-than time [options] target_url
duplicity remove-all-but-n-full count [options] target_url
duplicity remove-all-inc-of-but-n-full count [options] target_url

Локални резервни копия

Създаване на пълно резервно копие на локален диск

В примера резервните копия се съхраняват в /home/user/backups/11122012:

sudo duplicity full /var/www file:///home/user/backups/11122012

По време на генерирането на резервното копие е необходимо да се въведе ключова дума (passphrase) за криптиране.

Ако резервното копие е създадено успешно се извежда статистика:

--------------[ Backup Statistics ]--------------
StartTime 1355226390.51 (Tue Dec 11 13:46:30 2012)
EndTime 1355226416.21 (Tue Dec 11 13:46:56 2012)
ElapsedTime 25.70 (25.70 seconds)
SourceFiles 3161
SourceFileSize 108939125 (104 MB)
NewFiles 3161
NewFileSize 108939125 (104 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 3161
RawDeltaSize 108070773 (103 MB)
TotalDestinationSizeChange 58875412 (56.1 MB)
Errors 0
-------------------------------------------------

Създаване на инкрементално (incremental) копие на локален диск

В примера резервните копия се съхраняват в /home/user/backups/11122012:

sudo duplicity incremental /var/www file:///home/user/backups/11122012

Отново е необходимо да се въведе ключовата ума за архива.

Ако резервното копие е създадено успешно се извежда статистика:

--------------[ Backup Statistics ]--------------
StartTime 1355226751.24 (Tue Dec 11 13:52:31 2012)
EndTime 1355226753.84 (Tue Dec 11 13:52:33 2012)
ElapsedTime 2.61 (2.61 seconds)
SourceFiles 3161
SourceFileSize 108939125 (104 MB)
NewFiles 0
NewFileSize 0 (0 bytes)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 0
RawDeltaSize 0 (0 bytes)
TotalDestinationSizeChange 104 (104 bytes)
Errors 0
-------------------------------------------------

Възстановяване на резервно копие от локален диск

В примера резервните копия се съхраняват в /home/user/backups/11122012:

sudo duplicity restore file:///home/user/backups/11122012 /var/www

Резервни копия на FTP

Създаване на пълно (full) резервно копие на FTP сървър

FTP: 192.168.1.133

FTP потребител: backupuser

FTP парола: backuppass

sudo export PASSPHRASE=SomeLongGeneratedHardToCrackKey
sudo export FTP_PASSWORD=backuppass
sudo duplicity full /var/www ftp://backupuser@192.168.1.133/11122012
sudo unset PASSPHRASE
sudo unset FTP_PASSWORD

Създаване на инкрементално (incremental) резервно копие на FTP сървър

FTP: 192.168.1.133

FTP потребител: backupuser

FTP парола: backuppass

sudo export PASSPHRASE=SomeLongGeneratedHardToCrackKey
sudo export FTP_PASSWORD=backuppass
sudo duplicity incremental /var/www ftp://backupuser@192.168.1.133/11122012
sudo unset PASSPHRASE
sudo unset FTP_PASSWORD

Възстановяване на резервно копие от FTP сървър

FTP: 192.168.1.133

FTP потребител: backupuser

FTP парола: backuppass

sudo export PASSPHRASE=SomeLongGeneratedHardToCrackKey
sudo export FTP_PASSWORD=backuppass
sudo duplicity restore ftp://backupuser@192.168.1.133/11122012 /var/www 
sudo unset PASSPHRASE
sudo unset FTP_PASSWORD

Проверка на резервното копие

Проверка на локално резервно копие

sudo duplicity verify -v4 file:///home/user/backups/11122012 /var/www

Ако проверката е успешна се извежда резултат:

Verify complete: 3161 files compared, 0 differences found.

Проверка на резервно копие от FTP

sudo export PASSPHRASE=SomeLongGeneratedHardToCrackKey
sudo export FTP_PASSWORD=backuppass
sudo duplicity verify -v4 ftp://backupuser@192.168.1.133/11122012 /var/www 
sudo unset PASSPHRASE
sudo unset FTP_PASSWORD

Списък на съдържанието на архива

В примера е показано извеждане на съдържанието на резервното копие от FTP.

sudo export PASSPHRASE=SomeLongGeneratedHardToCrackKey
sudo export FTP_PASSWORD=backuppass
sudo duplicity list-current-files ftp://backupuser@192.168.1.133/11122012
sudo unset PASSPHRASE
sudo unset FTP_PASSWORD

Изтриване на стари резервни копия

В примера е посочено изтриване на резервно копия, по-стари от 1 година:

sudo duplicity remove-older-than 1Y --force ftp://backupuser@192.168.1.133

Автоматизиране

В примерите са показани конфигурации от https://help.ubuntu.com/community/DuplicityBackupHowto.

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

Съдържание на backup.sh:

#
# Script created on 12-1-2005
#
# This script was created to make Duplicity backups.
# Full backups are made on the 1st day of each month.
# Then incremental backups are made on the other days.
#

# Loading the day of the month in a variable.
date=`date +%d`

# Setting the pass phrase to encrypt the backup files.
export PASSPHRASE='SomeLongGeneratedHardToCrackKey'
export PASSPHRASE

# Setting the password for the FTP account that the
# backup files will be transferred to.
FTP_PASSWORD='WhateverPasswordYouSetUp'
export FTP_PASSWORD

# Check to see if we're at the first of the month.
# If we are on the 1st day of the month, then run
# a full backup.  If not, then run an incremental
# backup.
if [ $date = 01 ]
then
        duplicity full --no-encryption /home/user/.gpass ftp://FtpUserID@ftp.domain.com/passwords >>/var/log/duplicity/passwords.log
        duplicity full /media/data/backup ftp://FtpUserID@ftp.domain.com/personal >>/var/log/duplicity/personal.log
        duplicity full /etc ftp://FtpUserID@ftp.domain.com/etc >>/var/log/duplicity/etc.log
else
        duplicity --no-encryption /home/user/.gpass ftp://FtpUserID@ftp.domain.com/passwords >>/var/log/duplicity/passwords.log
        duplicity /media/data/backup ftp://FtpUserID@ftp.domain.com/personal >>/var/log/duplicity/personal.log
        duplicity /etc ftp://FtpUserID@ftp.domain.com/etc >>/var/log/duplicity/etc.log
fi
# Check http://www.nongnu.org/duplicity/duplicity.1.html
# for all the options available for Duplicity.

# Deleting old backups
        duplicity remove-older-than 1Y --force ftp://FtpUserID@ftp.domain.com/passwords >>/var/log/duplicity/passwords.log
        duplicity remove-older-than 1Y --force ftp://FtpUserID@ftp.domain.com/personal >>/var/log/duplicity/personal.log
        duplicity remove-older-than 1Y --force ftp://FtpUserID@ftp.domain.com/etc >>/var/log/duplicity/etc.log

# Unsetting the confidential variables so they are
# gone for sure.
unset PASSPHRASE
unset FTP_PASSWORD

exit 0

Допълнения

Ако се използва MySQL база данни при създаване на резервното копие може да се експортира и съдържанието на базите данни. Файлът може да се постави в директорията, която се архивира и след това да се изтрие.

sudo mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Източници

  1. https://help.ubuntu.com/community/DuplicityBackupHowto
  2. http://duplicity.nongnu.org/
  3. http://wiki.debian.org/Duplicity