{{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| Наверх ]]