В настоящее время я запускаю ddrescue на диске, который мне не удался. Он работает уже около 16 часов и все еще находится на стадии разделения блоков с ошибками, но уже некоторое время работает на скорости 0 B/s. Я копирую прямо на другой диск, а не делаю образ.

Могу ли я проверить, какой прогресс был достигнут, или это что-то расстроит? На отказавшем диске есть только один проект, который мне действительно нужен, я просто хочу проверить, скопированы ли эти файлы.

Команда, которую я запускал, была:

ddrescue -d -f -v /dev/sda5 /dev/sdc2 /media/username/USB/rescue.logfile

Я работаю на Ubuntu, а на старых дисках ОС была Arch, если это имеет значение.

1 ответ1

2

Теоретически вы можете прекратить (Ctrl+C) ddrescue и запустить его позже с тем же лог-файлом, чтобы продолжить, а не начать заново . Я видел некоторые посты, утверждающие, что этот метод не всегда работает - в этих случаях ddrescue игнорировал предыдущую работу и начинал с самого начала по неизвестной причине.

Попробуйте смонтировать целевой раздел только для чтения:

sudo mount -o ro /dev/sdc2 /mnt/foo

Как только для чтения, он не должен связываться с операцией ddrescue . Существует риск того, что данные, важные для файловой системы, еще не восстановлены, в этом случае mount завершится неудачно. Если вам повезет, вы сможете смонтировать, затем прочитать нужные файлы, но файлы могут быть повреждены, даже если вы не получили ошибок при mount и (например) cp . Осмотрите их или их копии. Не ddrescue если вы не уверены, что файлы действительны и не содержат невосстановленных / испорченных фрагментов внутри.

В случае каких-либо проблем вы можете подождать, пока ddrescue восстановит больше данных (если они есть). Я бы не стал ждать, пока не поврежденные файлы появятся под точкой монтирования, потому что система может кэшировать метаданные или сами файлы и т.д. Выполните umount , дождитесь восстановления данных, снова mount и проверьте файлы.


Изменить: ответить на дополнительные вопросы.

Есть ли способ сказать ddrescue, чтобы указать конкретную папку?

Нет. Инструмент работает на уровне блоков. Он ничего не знает о файловой системе и файлах. Ваше утверждение «ddrescuelog говорит, что 99,73% моих файлов были восстановлены» должно содержать «99,73% блоков».

Кроме того, возможно ли, что данные были восстановлены, так как говорится, что спасено 99,73%, но они слишком повреждены, чтобы их можно было распознать как файлы? Если это так, есть ли какая-нибудь программа для просмотра поврежденных файлов, возможно, я смогу восстановить некоторые из них вручную.

Возможный сценарий: содержимое файла восстанавливается, но соответствующая запись в файловой системе отсутствует (примечание: в общем случае возможно и обратное, но, очевидно, это не ваш случай). Вы сказали, что вся папка исчезла. Я думаю, что некоторые файлы могут появиться в lost+found после fsck (или аналогичным образом в зависимости от вашей файловой системы - я не знаю, что это).

Больше информации здесь: Какова цель папки lost+found в Linux и Unix?

Эта операция fsck не только для чтения, она не должна выполняться, когда работает ddrescue . Прекращение ddrescue , запуск fsck и возобновление ddrescue также плохая вещь. Лучше дождаться ddrescue . Это может занять некоторое время - прочитайте это и это .

В общем случае вы должны работать с fsck (или любым другим инструментом, не предназначенным только для чтения) над копией восстановленных данных. Хороший путь, для дальнейшего использования:

  1. Запись в файл, а не на устройство. Используйте файловую систему с функцией копирования при записи (COW) .
  2. Сделайте копию COW с помощью cp --reflink=always . Вы можете сделать это во время ddrescue операции. Эта копия похожа на снимок целевого файла.
  3. Используйте любые инструменты на копии, в том числе не только для чтения.
  4. В случае сбоя у вас все еще есть исходный целевой файл (возможно, с восстановлением большего количества данных, если ddrescue все еще работает), чтобы начать заново с другой копией COW (и, возможно, с другими инструментами).

Вы также можете попытаться найти удаленные файлы и восстановить их. Выбор инструмента зависит от файловой системы.

Еще один совет: возможно, ваше программное обеспечение использовало временные файлы где-то еще в иерархии файловой системы. Проверьте /tmp/ , /var/tmp/ .


Редактировать, отвечая на дополнительный вопрос.

Когда ddrescuelog сообщает, что 99,73% блоков были спасены, что это значит? Похоже, я должен ожидать некоторые результаты, а не пустой домашний диск.

Примечание: приведенный ниже пример не предназначен для охвата всех проблем и сценариев файловой системы, а также для разграничения секторов диска и единиц выделения файловой системы; это ответить только на вопрос.

Представьте, что ваш раздел - книга, энциклопедия, а не роман с сюжетом. Файлы статьи внутри. Дисковый блок (или сектор) похож на страницу в книге. Файловая система - это общий способ размещения статей на страницах. Некоторые страницы содержат оглавление (ToC), которое является проблемой файловой системы на нашей картинке и может выглядеть примерно так:

статья № 289: страницы 2076, 2077, 2078, 402, 403.

Обратите внимание, что эта статья фрагментирована в виде файла. На другой странице, но все еще в ToC, у нас есть что-то вроде структуры папок:

...
people/: см. ToC на стр. 43.
...
(страница 43)
mathematicians/: см. ToC на стр. 80.
famous Poles/: см. ToC на стр. 82.
Adam and Eve: см. Статью № 14.
...
(страница 80)
Euclid: см. Статью № 289.
Banach Stefan: см. Статью № 4380.
...
(страница 82)
Banach Stefan: см. Статью № 4380.
Kościuszko Tadeusz: см. Статью № 2208.
...

Эта структура является примером жестко связанных файлов. Есть по крайней мере два пути, которые указывают на одну статью: ./people/mathematicians/Banach Stefan и ./people/famous Poles/Banach Stefan . Здесь я поместил точку в начале каждого пути, потому что мой пример намеренно скрывает информацию: к какому разделу относятся people/ разделы? (это могут быть также /people/ или /full articles/people/ или /stubs/people/ или /foo/bar/people/).

В ToC также может быть раздел, который гласит:

"пустые" страницы: 567, 568, 569, 2070, 2071…

На данной странице есть текст (то есть данные), даже если она не принадлежит ни одной статье, существующей в то время. Это связано с тем, что процесс удаления статьи влияет только на оглавление. ToC является единственным определенным способом определить, относится ли данная страница к статье, к какой статье, или ее можно считать пустой и перезаписанной. Более того: невозможно найти "пустую страницу" без ToC. В энциклопедии кажется странным иметь пустую страницу в качестве части статьи, но сектор, полный 0 с, или пробелов, или чего-либо еще, может быть частью файла. Это все о ToC.

Некоторые из ваших страниц (блоков) не были спасены (пока). Любой из них может быть страницей с данными статьи или Toc- метаданными. Возможности:

  • Отсутствующий блок - это блок данных (скажем, стр. 2078). Вы знаете путь к статье о Евклиде и о том, на каких страницах он находится, но одна из страниц пуста, хотя не должна. Статья недействительна.
  • Отсутствующий блок - это блок метаданных. Некоторые сценарии:
    • Вы потеряли трек о свободном пространстве.
    • Вы знаете, что есть ./people/mathematicians/Euclid путь, но вам не хватает информации, на каких страницах статьи. Найти статью невозможно, если вы уже ничего о ней не знаете (например, запись о человеке, скорее всего, содержит слово "рожденный"; файлы PDF начинаются с «% PDF»).
    • Вы знаете, что на таких-то страницах есть одна статья, но нет полного пути к ней. В этом случае вы можете поместить его в lost+found и именно это сделает fsck . На нашей картине есть возможности (среди прочих):
      • Отсутствует страница 80: вы знаете (со страницы 43), что есть раздел (папка) по mathematicians , но вы не знаете, что статья № 289 должна быть в ней под названием "Евклид".
      • Недостающая страница 43: вы не знаете, что должна быть статья № 14 об Адаме и Еве, ни разделы с математиками, ни с известными поляками; но вы можете видеть (на странице 80), что есть некоторый раздел со статьями о Евклиде и Банахе, и есть другой раздел (страница 82) со статьями о Банахе и Костюшко. Это то, что может происходить с вашим /home . Статьи (файлы) есть и могут быть действительными. Они не могут быть достигнуты путем, потому что у вас нет Toc вашего /home .
  • Любая комбинация вышеупомянутых проблем может возникнуть, если есть несколько блоков, которые не могут быть восстановлены.
  • (РЕДАКТИРОВАТЬ) Отсутствующий блок может быть помечен как пустой. В этом случае вы ничего не потеряете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .