<a name="top"></a>

Извлечь отдельный файл/папку из архива duplicity

Экспорт в PDF

Дата создания: 2022/12/27 07:39 (C) mihanik

<a href='javascript:history.back();'><img src=/lib/exe/fetch.php/level_up.png height=35 width=50></a>

Дано

У нас есть бэкап созданный с помощью duplicity

Надо

Восстановить данные из бэкапа.

Предположим, что при создании бэкапа не использовалось шифрование

Решение

Основной синтаксис

duplicity restore --time <дата> --file-to-restore <путь_внутри_архива> <url_хранилища> <локальный_путь_назначения>

Примеры

1. Восстановить один конкретный файл из локального бэкапа

Допустим, мы хотим восстановить файл /etc/nginx/nginx.conf по состоянию на 15 июня 2026 года и сохранить его во временную папку.

duplicity --no-encryption restore --time 2026-06-15 --file-to-restore /etc/nginx/nginx.conf file:///mnt/backup_folder /tmp/nginx_restored.conf

2. Восстановить целую папку

Если указать папку в --file-to-restore, восстановится всё её содержимое на указанную дату.

duplicity --no-encryption restore --time 2026-06-15 --file-to-restore /var/www/html file:///mnt/backup_folder /tmp/restored_html/

3. Восстановление с удаленного сервера (S3/SSH)

Синтаксис тот же, меняется только URL хранилища.

duplicity --no-encryption restore --time 2026-06-15T14:30:00 --file-to-restore /home/user/data.sql s3://s3.amazonaws.com/my-bucket/backups /tmp/restored_data.sql

4. Восстановление с удаленного сервера FTP

# Укажем пароль для FTP-ресурса export FTP_PASSWORD=MyStr0ngPassw0rd duplicity --no-encryption restore --time 2026-06-15T14:30:00 --file-to-restore /home/user/data.sql ftp://username@hostname:21/backups /tmp/restored_data.sql #Удаляем FTP_PASSWORD unset FTP_PASSWORD

Форматы даты для параметра --time

Вы можете указать дату в нескольких форматах:

Точная дата: 2026-06-15 (восстановит состояние на конец этого дня / последний бэкап этого дня).

Точное время: 2026-06-15T14:30:00 (найдет бэкап, ближайший к этому времени, но не позже него).

Относительное время:

5D — 5 дней назад

1W — неделю назад

Важные нюансы, которые нужно знать

Важно!

Пути внутри архива

Путь в --file-to-restore должен в точности совпадать с тем, как файл был сохранен при создании бэкапа.

Если вы делали бэкап командой duplicity /var/www s3://..., то путь внутри архива будет /var/www/index.html

Если вы делали бэкап из текущей директории duplicity . s3://..., то путь будет index.html (без слэша в начале)

Подсказка! Чтобы узнать точный путь, используйте команду duplicity list-current-files --time 2026-06-15 <url_хранилища>.

Осторожно, перезапись!

Если файл по <локальному_путь_назначения> уже существует, duplicity перезапишет его без предупреждения.

Всегда восстанавливайте во временную папку (например, /tmp/) или указывайте новое имя файла, чтобы не потерять актуальные данные.

Права доступа и владельцы

При восстановлении duplicity сохраняет оригинальные UID/GID (пользователя и группу) и права доступа (chmod).

Если вы восстанавливаете файлы на другой сервер, где ID пользователей отличаются, вам придется вручную менять владельца восстановленных файлов через chown.

Шифрование

Если бэкап зашифрован, команда restore потребует доступ к GPG-ключу и паролю (через PASSPHRASE или GPG-агент), так как ей нужно будет расшифровать не только сам файл, но и метаданные, чтобы найти нужную версию на нужную дату.

Наверх

В моей WIKI постоянно ведётся какая-то работа со статьями. Если у вас возникли вопросы или замечания, можете их отправлять на почту support@mihanik.net