Пример использования duplicity для инкрементального бекапа

В этом блоге я уже говорил про «облачный» бекап с использованием 7z+Dropbox, развивая тему хочу поделиться простым скриптом инкрементального зашифрованного бекапа на удаленный ftp-сервер с помощью утилиты .

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

 [email protected]:~$ gpg --gen-key 

Список доступных ключей:

 [email protected]:~$ gpg --list-keys /home/rascal/.gnupg/pubring.gpg ------------------------ pub 2048R/6EC115F4 2012-02-26 uid Rascal (localhost)  sub 2048R/C1203923 2012-02-26 

А теперь непосредственно сам скрипт:

 #!/bin/bash # ENV FTP_USER=username FTP_PASSWORD=paSSw0rd FTP_HOST=ftp..com GPG=6EC115F4 DAY_FULL=1 DAYS_STORE=14 FILELIST=~/.config/-duplicity.list # # * Do not edit below this line # DAY_OF_WEEK=`date +%u` if [ "$DAY_OF_WEEK" -eq "$DAY_FULL" ] then ARG1=full else ARG1=incr fi # Run  export FTP_PASSWORD duplicity $ARG1 --encrypt-key="$GPG" --include-filelist=$FILELIST / ftp://[email protected]$FTP_HOST/ # Clear old data duplicity remove-older-than ${DAYS_STORE}D ftp://[email protected]$FTP_HOST/ unset FTP_PASSWORD exit 0 

Описание переменных используемых в скрипте:
FTP_USER — логин ftp-сервера
FTP_PASSWORD — пароль ftp-сервера
FTP_HOST — адрес ftp-сервера
GPG — ключ используемый для шифрования
DAYS_FULL — день в который происходит полный бекап; 0 — воскресение, 6 — суббота
DAYS_STORE — за сколько дней хранить резервные копии.

Формат списка backup-duplicity.list:

 - /bin - /boot - /dev + /etc + /home - /home/rascal/Downloads - /lib - /lib32 - /lib64 - /media - /mnt - /opt - /proc + /root - /sbin - /selinux - /srv - /sys - /tmp - /usr - /var + /var/spool/cron/crontabs 

Результат работы скрипта выглядит примерно так:

 [email protected]:~$ ./bin/backup-duplicity.sh NcFTP version is 3.2.4 Reading filelist /home/rascal/.config/backup-duplicity.list Sorting filelist /home/rascal/.config/backup-duplicity.list Local and Remote metadata are synchronized, no sync needed. Last full backup date: none --------------[ Backup Statistics ]-------------- StartTime 1330020724.17 (Thu Feb 23 22:12:04 2012) EndTime 1330020729.34 (Thu Feb 23 22:12:09 2012) ElapsedTime 5.17 (5.17 seconds) SourceFiles 1649 SourceFileSize 4468555 (4.26 MB) NewFiles 1649 NewFileSize 4468555 (4.26 MB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 1649 RawDeltaSize 3594797 (3.43 MB) TotalDestinationSizeChange 812970 (794 KB) Errors 0 -------------------------------------------------