Бекапы через Duplicity

У меня уже был установлен, если нет, то:

apt install -y duplicity

Запускать его рекомендую под root. А также добавить в cron.

Делаем бекап без шифрования.

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

duplicity --no-encryption /home/crusat/www/crusat file:///mnt/backup/incremental/

Пример вывода:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1685457148.21 (Tue May 30 17:32:28 2023)
EndTime 1685457321.37 (Tue May 30 17:35:21 2023)
ElapsedTime 173.16 (2 minutes 53.16 seconds)
SourceFiles 2598
SourceFileSize 2430153960 (2.26 GB)
NewFiles 2598
NewFileSize 2430153960 (2.26 GB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 2598
RawDeltaSize 2428822760 (2.26 GB)
TotalDestinationSizeChange 559464350 (534 MB)
Errors 0
-------------------------------------------------

После инкрементального пример вывода:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Tue May 30 17:32:28 2023
--------------[ Backup Statistics ]--------------
StartTime 1685458987.94 (Tue May 30 18:03:07 2023)
EndTime 1685458988.72 (Tue May 30 18:03:08 2023)
ElapsedTime 0.79 (0.79 seconds)
SourceFiles 2598
SourceFileSize 2430165025 (2.26 GB)
NewFiles 1
NewFileSize 4096 (4.00 KB)
DeletedFiles 0
ChangedFiles 5
ChangedFileSize 16991003 (16.2 MB)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 6
RawDeltaSize 72816 (71.1 KB)
TotalDestinationSizeChange 18152 (17.7 KB)
Errors 0
-------------------------------------------------

Делаем полный бекап:

duplicity --no-encryption --full /home/crusat/www/crusat file:///mnt/backup/full/

При необходимости, можно исключить файлы с помощью опции --exclude.

Восстанавливаем бекап:

duplicity --no-encryption restore file:///mnt/backup/incremental/ /home/crusat/www/crusat

Восстанавливаем бекап трехдневной давности:

duplicity -t 3D --no-encryption restore file:///mnt/backup/incremental/ /home/crusat/www/crusat

Восстанавливаем конкретный файл:

duplicity --no-encryption --file-to-restore FILENAME file:///mnt/backup/incremental/ /home/crusat/www/crusat

Все работает через scp, поэтому можно делать так:

duplicity --no-encryption /home/crusat/www/crusat scp:///user@backup.ru/incremental/

Добавляем в cron для ежедневных бекапов:

crontab -e
# добавляем через любимый редактор задачу на час ночи ежедневно
0 1 * * * duplicity --no-encryption /home/crusat/www/crusat file:///mnt/backup/incremental/

Всем спасибо за внимание.

bash copypaste devops