Поэтому я запустил эти сценарии ddrescue (сначала сделал их исполняемыми с помощью команды «chmod + x», затем вызвал их с помощью ./name_of_the_script):
- Сначала команды не работали, ddrescue выдавал только ошибки, мне пришлось снова редактировать сценарии, чтобы параметры помещались перед именами входных и выходных файлов. Затем команды выглядели так:
ddrescue -P -i 2115843346432 -s 17563648 -o 0 ST3000DM001-2.dd 201707222358.mp4 ddrescue -P -i 2115861041152 -s 65536 -o 17563648 ST3000DM001-2.dd 201707222358.mp4 ddrescue -P -i 2115861172224 -s 262144 -o 17629184 ST3000DM001-2.dd 201707222358.mp4 ddrescue -P -i 2115861499904 -s 65536 -o 17891328 ST3000DM001-2.dd 201707222358.mp4 ddrescue -P -i 2115861630976 -s 196608 -o 17956864 ST3000DM001-2.dd 201707222358.mp4 ddrescue -P -i 2115862024192 -s 131072 -o 18153472 ST3000DM001-2.dd 201707222358.mp4 ... ddrescue -P -i 2327182266368 -s 36864 -o 883752960 ST3000DM001-2.dd 201707222358.mp4 (Total size of that file : 883787365, or 883789824 with the slack space.) (“-P” stands for “preview”, “-i” for “input position”, “-s” for “size”, “-o” for “output position”.) (The paths could be omitted as the scripts, the image file and the expected output files were all in the same directory.)
- Затем с первой попытки был получен нечитаемый файл без правильного заголовка MP4. Зачем ? Поскольку список, предоставленный Hard Disk Sentinel, содержит физические / абсолютные номера секторов, но номера логических кластеров (я подтвердил, открыв файл образа с WinHex), поэтому мне пришлось добавить 264192x512 к расчету входного смещения (смещение раздела равно 264192 секторы, или 129 МБ).
- Тогда это сработало. Это заняло всего несколько минут и создало пять видеофайлов, которые в основном читабельны, пропускаемы до конца, с их ожидаемым содержанием - я не смотрел их полностью, но это кажется настолько безупречным, насколько это возможно.
(Я сделал все это на дополнительном компьютере, работающем в Knoppix, с карты памяти и использовал TeamViewer для управления им со своего основного компьютера в Windows 7, а также для простой передачи файлов сценариев. Возможно, существует более простая настройка для такие цели, но, ну, это работает!: ^ p)
- Но, конечно, есть поврежденные части, поскольку в этом частичном изображении были нечитаемые сектора. Как я мог узнать где, быстро и надежно? Ну ... у
меня была идея использовать режим ddrescue «генерировать», который создает лог-файлы (или файлы-карты, как они теперь называются), анализируя выходные данные и учитывая, что полностью пустые сектора являются непрочитанными секторами, помеченными «?», Остальные отмечен знаком «+». Поскольку ddrescue ожидает входной файл и выходной файл, но в этом режиме фактически анализируется только выходной файл, я создал фиктивные входные файлы с помощью этой команды, которая копирует только 1 МБ, но увеличивает размер до размера выходных файлов (только для сэкономить время и пространство):
ddrescue -s 1048576 -x 883789824 201707222358.mp4 201707222358copy.mp4
Затем я запустил команду «generate»:
ddrescue -G 201707222358copy.mp4 201707222358.mp4 201707222358-generate.log
А затем я открыл эти файлы с помощью ddrescueview:
(Три из шести файлов серьезно повреждены, как и первый выше, с большими порциями пустых данных, у трех других есть только несколько поврежденных секторов, как у второго. Второй - тот, который не был фрагментирован, я его извлек с одной командой ddrescue.)
А потом я похлопал себя по спине одной рукой, в то время как я шлепал себя по лицу за то, что каждый месяц использовал этот жесткий диск объемом 3 ТБ без резервного копирования ... (Сначала предполагалось, что он будет хранить только временные данные, а Я бы освободил место на других жестких дисках, но это заняло больше времени, чем ожидалось, и у меня не хватило места для хранения таких видео и даже моих личных фотографий и видео в какой-то момент, это могло бы стать серьезной катастрофой, но «это всего лишь глюк », как сказал бы Дик Джонс.)