Резервни копия с duplicity
Съдържание
Въведение
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/alextz/backups/11122012:
sudo duplicity full /var/www file:///home/alextz/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/alextz/backups/11122012:
sudo duplicity incremental /var/www file:///home/alextz/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/alextz/backups/11122012:
sudo duplicity restore file:///home/alextz/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/alextz/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