7

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

Сбой ddrescue в конце, с ошибкой относительно места на диске, даже с опцией -S.

Почему невозможно сжать изображение при его создании? Это возможно с dd и dd_rescue.

Кроме того, man ddrescue говорит, что опция -S работает не на всех системах, но как узнать, работает ли она на моей?

2 ответа2

8

gddrescue не создает образ файла по порядку - он возвращается и повторяет попытки, заполняя пробелы, и я подозреваю, что именно поэтому вы не можете эффективно передать его во что-то другое. Man-страница подробно расскажет об этом

GNU ddrescue эффективно управляет состоянием процесса восстановления и пытается спасти хорошие части в первую очередь, планируя чтения в плохих (или медленных) областях на потом. Это максимизирует объем данных, которые могут быть окончательно восстановлены с неисправного диска.

Стандартная утилита dd может использоваться для сохранения данных с неисправного диска, но она считывает данные последовательно, что может привести к износу диска, не спасая ничего, если ошибки возникли в начале диска.

Другие программы переключаются на чтение небольшого размера, когда они находят ошибки, но они все еще читают данные последовательно. Это плохая идея, потому что это означает проводить больше времени в местах с ошибками, повредить поверхность, головки и механику привода, вместо того, чтобы вырываться из них как можно быстрее. Такое поведение уменьшает шансы на спасение оставшихся хороших данных.

Его дизайн, и решение, к сожалению, состоит в том, чтобы получить больший двигатель. Чтобы аргумент -S работал, я считаю, что используемое пространство на исходном диске должно быть меньше, чем на целевом диске.

7

Можно сжимать изображения , созданные с помощью ddrescue на лету. Дело в том , что ddrescue требует места для поиска, так как оно будет проходить через несколько проходов (и поэтому должно иметь возможность перепрыгивать назад, чтобы заполнить более ранние пробелы, как объясняет @JourneymanGeek в своем ответе). Это означает, что вы не можете использовать канал в качестве вывода, так как канал не доступен для поиска. Поэтому вы не можете передавать программы сжатия.

Один из способов обойти это - использовать прозрачное сжатие. Некоторые файловые системы (в частности, Btrfs, среди прочих) предоставляют эту встроенную функцию. В качестве альтернативы вы можете использовать драйверы файловой системы для обеспечения прозрачного, доступного для поиска сжатого хранилища, например fusecompress.

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