- Вопрос или проблема
- Ответ или решение
- Ошибка восстановления в Deja Dup и Duplicity: Решение проблемы
- 1. Понимание проблем
- 2. Проверка содержимого резервной копии
- 3. Восстановление конкретных файлов
- 4. Проверка полномочий и зависимостей
- 5. Использование Deja Dup в графическом интерфейсе
- 6. Логи ошибок и отладка
- 7. Альтернативные методы восстановления
- Заключение
Вопрос или проблема
Новый и неопытный пользователь Ubuntu. С трудом умею пользоваться командной строкой.
У меня был старый ПК, на который я установил Ubuntu версии 22.04 LTS. Я использовал предложенный инструмент резервного копирования Ubuntu DEJA DUP, чтобы начать резервное копирование нескольких избранных файлов. Через несколько недель старый ПК вышел из строя. Прощай.
Сейчас я использую ПК, на котором загружаю Windows с его локального жесткого диска, а иногда загружаю Ubuntu с внешнего диска для Ubuntu (который имеет ту же версию, что и потерянный ПК год назад). Я хочу восстановить свои архивы, которые находятся в домашней папке на этом же внешнем диске. В качестве дополнительной информации:
benoit@Surface-Pro-3:~$ ls -l
total 48
drwxr-xr-x 3 root root 4096 juil. 20 12:46 bureau
drwxrwxrwx 2 benoit benoit 4096 juil. 27 15:49 Bureau
drwxrwxrwx 4 benoit benoit 4096 juil. 27 15:45 Documents
drwxrwxrwx 2 benoit benoit 4096 févr. 11 14:59 Images
drwxrwxrwx 2 benoit benoit 4096 juil. 27 15:25 maison
drwxrwxrwx 2 benoit benoit 4096 févr. 11 14:59 Modèles
drwxrwxrwx 2 benoit benoit 4096 févr. 11 14:59 Musique
drwxrwxr-x 3 benoit benoit 4096 juil. 27 15:42 OneDrive_bejibe
drwxrwxrwx 2 benoit benoit 4096 févr. 11 14:59 Public
drwx------ 7 benoit benoit 4096 juil. 14 18:45 snap
drwxrwxrwx 2 benoit benoit 4096 juil. 27 15:18 Téléchargements
drwxrwxrwx 2 benoit benoit 4096 juil. 27 15:49 Vidéos
Файлы архива находятся на том же диске, в папке “maison”:
benoit@Surface-Pro-3:~/maison$ ls -l
total 260612
-rw-rw-rw- 1 benoit benoit 2598 juil. 6 2023 duplicity-full.20230706T092526Z.manifest.gpg
-rw-rw-rw- 1 benoit benoit 209720636 juil. 6 2023 duplicity-full.20230706T092526Z.vol3.difftar.gpg
-rw-rw-rw- 1 benoit benoit 15396575 juil. 6 2023 duplicity-full.20230706T092526Z.vol4.difftar.gpg
-rw-rw-rw- 1 benoit benoit 4383858 juil. 6 2023 duplicity-full-signatures.20230706T092526Z.sigtar.gpg
-rw-rw-rw- 1 benoit benoit 693 juil. 15 2023 duplicity-inc.20230706T092526Z.to.20230715T095804Z.manifest.gpg
-rw-rw-rw- 1 benoit benoit 18507 juil. 15 2023 duplicity-inc.20230706T092526Z.to.20230715T095804Z.vol1.difftar.gpg
-rw-rw-rw- 1 benoit benoit 3606 juil. 23 2023 duplicity-inc.20230715T095804Z.to.20230723T112803Z.manifest.gpg
-rw-rw-rw- 1 benoit benoit 36755510 juil. 23 2023 duplicity-inc.20230715T095804Z.to.20230723T112803Z.vol1.difftar.gpg
-rw-rw-rw- 1 benoit benoit 11500 juil. 15 2023 duplicity-new-signatures.20230706T092526Z.to.20230715T095804Z.sigtar.gpg
-rw-rw-rw- 1 benoit benoit 546840 juil. 23 2023 duplicity-new-signatures.20230715T095804Z.to.20230723T112803Z.sigtar.gpg
Я пытался восстановить полный архив резервного копирования с помощью инструмента DEJA-DUP, и он выдает ошибку. Я также пытался восстановить архив с помощью команды SU (я не знаю, как указать дату, поэтому предполагаю, что он пытается выполнить полное восстановление)
sudo duplicity restore file:///PathToBackupDIR PathToDestinationDir
и он выдает ту же ошибку с точно таким же сообщением об ошибке. Вот оно:
Traceback (innermost last):
File "/usr/bin/duplicity", line 92, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 75, in with_tempdir
fn()
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1568, in main
do_backup(action)
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1651, in do_backup
restore(col_stats)
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 736, in restore
restore_get_patched_rop_iter(col_stats)):
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 788, in restore_get_patched_rop_iter
file_names.append(backup_set.volume_name_dict[vol_num])
KeyError: 1
У меня есть только один полный архив, это был мой первый архив. И 2 инкрементных даты. Все в июле 2023 года, год назад.
С DEJA-DUP, если я хочу восстановить выбранные файлы из подпапки из резервной копии, иногда это работает для НЕКОТОРЫХ файлов, а НИ для других файлов, иногда с полной датой резервного копирования, иногда с инкрементной датой резервного копирования. Это безумие! В одной и той же подпапке и с одной датой резервного копирования некоторые файлы могут быть восстановлены, другие файлы выдают сообщение об ошибке. Например, с DEJA-DUP я смог восстановить эти файлы в их оригинальной папке (см. список ниже восстановленных файлов), НО архив, показанный DEJA-DUP в той же папке, имеет больше файлов, которые все выдают ошибку ниже.
benoit@Surface-Pro-3:~/OneDrive_bejibe/Images OneDrive/Camera Roll$ ls -l
total 156748
-rw-rw-r-- 1 benoit benoit 4068880 juin 18 2023 PXL_20230609_192446719.jpg
-rw-rw-r-- 1 benoit benoit 2712051 juin 18 2023 PXL_20230611_175128889.jpg
-rw-rw-r-- 1 benoit benoit 2970920 juin 18 2023 PXL_20230611_175304808.jpg
-rw-rw-r-- 1 benoit benoit 3051820 juin 18 2023 PXL_20230611_175416024~2.jpg
-rw-rw-r-- 1 benoit benoit 3308617 juin 18 2023 PXL_20230611_175416024.jpg
-rw-rw-r-- 1 benoit benoit 4257834 juin 18 2023 PXL_20230613_113626825.jpg
-rw-rw-r-- 1 benoit benoit 4853569 juin 18 2023 PXL_20230613_113634348.jpg
-rw-rw-r-- 1 benoit benoit 4899359 juin 18 2023 PXL_20230613_113649255.MP.jpg
-rw-rw-r-- 1 benoit benoit 4261302 juin 18 2023 PXL_20230613_113712546.jpg
-rw-rw-r-- 1 benoit benoit 3954441 juin 18 2023 PXL_20230613_113728579.jpg
-rw-rw-r-- 1 benoit benoit 99586113 juin 18 2023 PXL_20230613_123038623.mp4
-rw-rw-r-- 1 benoit benoit 5417782 juin 18 2023 PXL_20230613_123247011.MP.jpg
-rw-rw-r-- 1 benoit benoit 5807504 juin 18 2023 PXL_20230613_123304330.MP.jpg
-rw-rw-r-- 1 benoit benoit 5745175 juin 18 2023 PXL_20230613_123309285.MP.jpg
-rw-rw-r-- 1 benoit benoit 5575688 juin 18 2023 PXL_20230613_123340419.MP.jpg
Содержимое архива для последней инкрементной даты (я не знаю, как показать для всех 3 дат), используя команду:
duplicity list-current-files file:///home/benoit/maison/
Возвращает длинный список файлов. Я перечислю ниже только те, которые находятся в папке, которую я хочу восстановить:
Sun Jul 23 12:24:34 2023 home/benoit/OneDrive_bejibe/Images OneDrive/Camera Roll
Sat Jan 16 14:25:40 2021 home/benoit/OneDrive_bejibe/Images OneDrive/Camera Roll/20201228_174833.jpg
Mon Aug 17 10:34:14 2020 home/benoit/OneDrive_bejibe/Images OneDrive/Camera Roll/P1050043.JPG
Mon Aug 17 10:32:25 2020 home/benoit/OneDrive_bejibe/Images OneDrive/Camera Roll/P1050044.JPG
Fri Aug 21 15:07:49 2020 home/benoit/OneDrive_bejibe/Images OneDrive/Camera Roll/P10500621.jpg
Fri Aug 21 15:11:21 2020 home/benoit/OneDrive_bejibe/Images OneDrive/Camera Roll/P10500631.jpg
Для этих файлов выше я получил сообщение:
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase for decryption:
Traceback (innermost last):
File "/usr/bin/duplicity", line 92, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 75, in with_tempdir
fn()
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1568, in main
do_backup(action)
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1651, in do_backup
restore(col_stats)
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 736, in restore
restore_get_patched_rop_iter(col_stats)):
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 758, in restore_get_patched_rop_iter
backup_chain = col_stats.get_backup_chain_at_time(time)
File "/usr/lib/python3/dist-packages/duplicity/dup_collections.py", line 1011, in get_backup_chain_at_time
raise CollectionsError(u"No backup chains found")
duplicity.dup_collections.CollectionsError: No backup chains found
Когда я запускаю DEJA_DUP в режиме отладки и пытаюсь восстановить файл, я знаю, что не восстанавливается хорошо, я получаю сообщение:
Traceback (innermost last):
File "/usr/bin/duplicity", line 92, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 75, in with_tempdir
fn()
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1568, in main
do_backup(action)
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1651, in do_backup
restore(col_stats)
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 736, in restore
restore_get_patched_rop_iter(col_stats)):
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 788, in restore_get_patched_rop_iter
file_names.append(backup_set.volume_name_dict[vol_num])
KeyError: 2
Я прочитал страницу “Как вручную восстановить поврежденную резервную копию deja dup”, я ничего не понимаю. Я не на этом уровне.
КАКАЯ-ЛИБО ПОМОЩЬ?
Я где-то читал, что такая ошибка вызвана идентичными именами целевых файлов, но с разными расширениями. Вы могли бы попробовать изолировать целевые файлы и повторить.
Я думаю (вы не опубликовали свои командные строки), что вы пытались использовать duplicity
напрямую. Что-то вроде:
duplicity restore file:///PathToBackupDIR /PathToDestinationDir
Это восстановит последний. Посмотрите страницу man
для получения дополнительных опций.
Возможно, вам стоит попробовать разные комбинации, такие как извлечение конкретной директории или более старого архива.
Надеюсь, это окажет некоторую помощь.
Дополнение 1
Если это не увенчалось успехом, то, возможно, вы могли бы перечислить файлы duplicity и опубликовать как часть вашего вопроса. Если все остальное не поможет, вы можете попытаться восстановить файлы вручную (не для новичков) – смотрите ссылку ниже (заметьте: она немного старая).
Как вручную восстановить поврежденную резервную копию Deja Dup
Надеюсь, это окажет некоторую помощь.
Дополнение 2
Добавьте список файлов в целевом архиве.
Затем попробуйте запустить deja-dup из командной строки в режиме отладки следующим образом:
DEJA_DUP_DEBUG=1 deja-dup | tail -n 200 | tee /tmp/deja-dup.log
(Это изменено, чтобы также поместить отладочные данные в терминал, чтобы было легче вставить в оригинальный вопрос.)
повторяя первоначальное восстановление, а затем добавляя результат (файл в конце команды) к концу вашего оригинального вопроса.
Смотрев на список бэкенда (архива), который вы опубликовали, можно предположить, что объемы 1 и 2 отсутствуют, поскольку они обычно создаются по порядку. Чтобы это подтвердить, мне нужно было бы увидеть журнал, который я запросил в своем последнем сообщении. Если вы хотите увидеть аналогичный журнал, чтобы понять, что я имею в виду, посмотрите на другой ответ: –
Я получил аналогичное сообщение об ошибке в моем случае, потому что я использовал cat
, чтобы объединить несколько папок .zip с содержимым Deja Dup в одну папку. (Я скачал эти содержимое из Google Диска, и из-за их размера Google Диск разбил их на несколько папок.) DejaDup не смог корректно обработать эту объединенную папку.
Я смог решить эту проблему, извлекая каждую папку .zip по отдельности; объединив содержимое в одну и ту же папку с помощью команд копирования и вставки; а затем заставив Deja Dup восстановить эту папку. На этот раз я не получил ошибку.
Это может не решить проблему, с которой вы столкнулись, но, надеюсь, этот ответ поможет всем, кто также пытается восстановить локальную копию файлов DejaDup, которые изначально существовали на Google Диске.
Ответ или решение
Ошибка восстановления в Deja Dup и Duplicity: Решение проблемы
Учитывая ваш опыт использования Ubuntu и проблему с восстановлением резервных копий с помощью Deja Dup и Duplicity, давайте рассмотрим шаги, которые помогут вам решить возникшие сложности. Я постараюсь сделать объяснение максимально ясным и пошаговым.
1. Понимание проблем
На основании предоставленной информации, вы столкнулись с несколькими ключевыми ошибками во время попытки восстановить резервные копии:
-
KeyError: 1 и KeyError: 2: Эти ошибки указывают на то, что программы не могут найти необходимые файлы для выполнения операции восстановления. Обычно это следствие отсутствия полных объемов резервных копий или некорректной структуры папок.
-
Сообщение о "Нет цепочек резервного копирования": Это может означать, что структура резервного копирования повреждена, или вы пытаетесь восстановить данные из неправильной точки во времени.
2. Проверка содержимого резервной копии
Первым шагом предложите проверить содержимое ваших резервных копий с помощью команды:
duplicity list-current-files file:///home/benoit/maison/
Это покажет все файлы, которые доступны для восстановления, и поможет вам убедиться, что все необходимые резервные копии присутствуют.
3. Восстановление конкретных файлов
Если у вас есть конкретные файлы, которые вы хотите восстановить, попробуйте использовать опцию восстановления для отдельной даты. Например:
duplicity restore --file-to-restore <path/to/file> file:///home/benoit/maison/ <path/to/destination>
Замените <path/to/file>
на путь к нужному файлу в резервной копии, а <path/to/destination>
на путь к месту, куда нужно восстановить этот файл.
4. Проверка полномочий и зависимостей
Убедитесь, что у вас есть все необходимые зависимости и что у вас достаточно полномочий для работы с файлами:
- Проверьте, что вы являетесь владельцем или у вас есть права доступа на файлы в директории резервного копирования.
- Если вы скопировали резервные файлы с другого устройства, убедитесь, что права и владелец файлов корректно настроены.
5. Использование Deja Dup в графическом интерфейсе
Если вы предпочитаете графический интерфейс, попробуйте выполнить шаги восстановления через Deja Dup:
- Запустите Deja Dup.
- Выберите "Восстановление" (Restore).
- Убедитесь, что вы выбираете правильную директорию для восстановления.
- Если выбираете определенную дату, убедитесь, что у вас есть доступ ко всем необходимым файлам.
6. Логи ошибок и отладка
Если проблемы продолжаются, запустите Deja Dup в режиме отладки, чтобы собрать дополнительную информацию о возникших ошибках:
DEJA_DUP_DEBUG=1 deja-dup | tee ~/deja-dup.log
Это создаст файл deja-dup.log
, который может помочь в дальнейшем анализе проблемы.
7. Альтернативные методы восстановления
Если ни один из вышеуказанных методов не сработал, вы можете попробовать вручную восстановить резервные копии:
- Используйте команду
gpg
для расшифровки файлов, если они зашифрованы. - Используйте
tar
или другие инструменты для извлечения содержимого из файлов резервных копий, если они хранятся в специфичных форматах.
Заключение
Мир резервных копий и восстановления может быть запутанным, особенно для новых пользователей. Надеюсь, что представленные выше шаги помогут вам решить проблему с восстановлением ваших данных из Deja Dup и Duplicity. Если у вас все еще возникают проблемы, рассмотрите возможность обратиться на специализированные форумы, где более опытные пользователи смогут помочь вам с более точными советами.