Duplicity — это утилита командной строки для резервного копирования и восстановления. Резервные копии могут быть загружены в хранилище по протоколам SCP, SFTP, WebDAV, S3, Swift и др. Утилита по умолчанию шифрует бэкапы с помощью GnuPG.
Ниже рассмотрим настройку duplicity для резервного копирования в объектное хранилище Timeweb Cloud по протоколу S3.
Создайте для хранения резервных копий отдельный бакет.
Установите пакет duplicity
:
sudo apt install duplicity
И установите пакет boto
:
pip3 install boto
Создайте файл backup.sh
со следующим содержимым и замените значения переменных на актуальные. Найти необходимые данные можно в панели управления в настройках бакета.
#!/usr/bin/env bash
export AWS_ACCESS_KEY_ID="S3 Access Key"
export AWS_SECRET_ACCESS_KEY="S3 Secret Access Key"
export PASSPHRASE="пароль_для_шифрования_бэкапа"
endpoint_url="https://s3.twcstorage.ru"
endpoint_host="s3.twcstorage.ru"
# Путь до директории, которую необходимо копировать
source=/home
# Имя бакета и путь внутри него
bucket=имя_бакета
path_in_bucket=backup
# Запуск duplicity
duplicity \
--s3-endpoint-url="$endpoint_url" \
"$source" "s3://$endpoint_host/$bucket/$path_in_bucket"
Дайте скрипту права на выполнение командой:
chmod +x backup.sh
Запустите скрипт:
./backup.sh
Для восстановления файлов из бэкапа также можно использовать скрипт. Создайте файл restore.sh
со следующим содержимым:
#!/usr/bin/env bash
export AWS_ACCESS_KEY_ID="S3 Access Key"
export AWS_SECRET_ACCESS_KEY="S3 Secret Access Key"
export PASSPHRASE="пароль_для_шифрования_бэкапа"
endpoint_url="https://s3.twcstorage.ru"
endpoint_host="s3.twcstorage.ru"
bucket=имя_бакета
path_in_bucket=backup
restore_path=/home/restore_test # сюда восстановим данные
duplicity \
--s3-endpoint-url="$endpoint_url" \
"s3://$endpoint_host/$bucket/$path_in_bucket" \
"$restore_path"
Дайте скрипту права на выполнение:
chmod +x restore.sh
Запустите скрипт:
./restore.sh
не работае, падает с такой ошибкой
Container creation failed: ClientException Container PUT failed: https://s3.timeweb.com/v1/TW_cc14378/20c398f1-oldcity 400 Bad Request [first 60 chars of response] b'
BucketAlr'
Попробовали со своей стороны — все отработало корректно. Напишите, пожалуйста, тикет из своей панели, посмотрим, что могло пойти не так 🤔