Приведу пример установки и использования Duplicity. Создания полных и инкрементных резервных копий на локальный и удаленный сервер.
Команда установки в Ubuntu:
apt update
apt install duplicity
duplicity -V
Также установим необходимые компоненты (например python-paramiko необходим для подключений по scp, ncftp — для подключений по ftp):
apt install python-paramiko ncftp
Приведу пример резервного копирования в файл на локальном сервере и восстановления в другую директорию:
duplicity --no-encryption /home/test file:/home/backup_test
duplicity restore --no-encryption file:/home/backup_test /home/restore
Можно проверить целостность резервной копии после ее создания:
duplicity verify --no-encryption file:/home/backup_test /home/test
При первом запуске duplicity выполняет полную резервную копию, а при следующих запусках инкрементную, чтобы принудительно выполнить полную резервную копию:
duplicity full --no-encryption /home/test file:/home/backup_test
Резервное копирование на другой сервер по SCP(SSH):
duplicity --no-encryption /home/test scp://test@ixnfo.com//home/test/backups
Подключение к SSH с использованием ключей
Можно исключать из резервного копирования директории:
duplicity full --no-encryption --exclude /home/test/dir1 -exclude /home/test/dir2 /home/test scp://test@ixnfo.com//home/test/backups
Восстановление директории из резервной копии, по умолчанию существующая директория не перезаписывается, по этому можно восстановить в отдельную директорию:
duplicity restore --no-encryption scp://test@ixnfo.com//home/test/backups /home/test_restore
Либо в существующую но указав —force:
duplicity restore --force --no-encryption scp://test@ixnfo.com//home/test/backups /home/test
Можно проверить посчитав количество файлов:
find /home/test_restore/ -type f | wc -l
find /home/test/ -type f | wc -l
Нужно осторожно использовать опцию —force, так как при неверном указании пути, могут стереться важные директории.
Пример восстановления только одного файла из резервной копии (указание имени файла в пути для сохранения обязательно! если вы просто укажете что нужно восстановить файл в директорию /home/test, то эта директория будет удалена и вместо нее будет файл с именем test):
duplicity restore --no-encryption --file-to-restore ixnfo.sh scp://test@ixnfo.com//home/test/backups /home/test/ixnfo.sh
Восстановление файла 5 дней назад (и сверим различия, если это текстовый файл):
mkdir /duplicity/
duplicity restore -t 5D --no-encryption --file-to-restore ixnfo.sh scp://test@ixnfo.com//home/test/backups /duplicity/ixnfo.sh
diff /home/test/backups/ixnfo.sh /duplicity/ixnfo.sh
Также можно указать s — секунды, m — минуты, h — часы, D — дни, W — недели, M — месяцы, Y — годы.
Резервное копирование в директорию на FTP сервере:
FTP_PASSWORD=password duplicity /home/test ftp://test@ixnfo.com/backup
Пример создания резервной копии директории /etc/ на удаленный сервер через sftp:
duplicity /etc/ sftp://test@ixnfo.com//backups
Если необходимо шифровать/дешифровать данные, то генерируем GPG ключи:
gpg --gen-key
Посмотрим публичный ключ и используем его:
gpg --list-keys
duplicity --encrypt-key="01A323FB259A9C482C41B1532A5F7D757D16180F" /home/test scp://test@ixnfo.com//home/test/backups
Пример просмотра информации о резервных копиях:
duplicity collection-status file:/home/backup_test
Просмотр списка файлов в резервной копии:
duplicity list-current-files file:/home/backup_test
Принудительное удаление резервных копий старше 30 дней:
duplicity remove-older-than 30D --force file:/home/backup_test
Смотрите также мои статьи:
Установка и настройка fsbackup
Установка и использование rsync в Linux
Другие мои статьи на тему Резервное копирование