{{description>Рассматривается способ извлечения файла/папки из архива duplicity}}
====== Извлечь отдельный файл/папку из архива duplicity ======
[[http://wiki.mihanik.net/doku.php?id=операционные_системы:linux:duplicity:извлечь_отдельный_файл_из_архива&do=export_pdf|Экспорт в PDF ]] ~~ODT~~
Дата создания: 2022/12/27 07:39 (C) mihanik
{{ :операционные_системы:linux:duplicity:duplicityrestorefiles.png?direct&600 |}}
===== Дано =====
У нас есть бэкап созданный с помощью duplicity
===== Надо =====
Восстановить данные из бэкапа.
Предположим, что при создании бэкапа не использовалось шифрование
===== Решение =====
==== Основной синтаксис ====
duplicity restore --time <дата> --file-to-restore <путь_внутри_архива> <локальный_путь_назначения>
==== Примеры ====
=== 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 .
=== Осторожно, перезапись! ===
Если файл по <локальному_путь_назначения> уже существует, **duplicity** **перезапишет его без предупреждения**.
Всегда восстанавливайте во временную папку (например, /tmp/) или указывайте новое имя файла, чтобы не потерять актуальные данные.
=== Права доступа и владельцы ===
При восстановлении **duplicity** сохраняет оригинальные UID/GID (пользователя и группу) и права доступа (**chmod**).
Если вы восстанавливаете файлы на другой сервер, где ID пользователей отличаются, вам придется вручную менять владельца восстановленных файлов через **chown**.
=== Шифрование ===
Если бэкап зашифрован, команда restore потребует доступ к GPG-ключу и паролю (через **PASSPHRASE** или GPG-агент), так как ей нужно будет расшифровать не только сам файл, но и метаданные, чтобы найти нужную версию на нужную дату.
[[#top| Наверх ]]