Использование dd для обнаружения поврежденных секторов

Вот решение на Python:

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
"""split_bytes.py"""

import os
import sys

stdout = os.fdopen(sys.stdout.fileno(), 'wb')

path_to_file = sys.argv[1]
width_in_bytes = int(sys.argv[2])

with open(path_to_file, "rb") as f:
    byte = f.read(1)
    while byte:
        for i in range(width_in_bytes):
            stdout.write(byte)
            byte = f.read(1)
        stdout.write(b"\n")

Вы можете выполнить это так:

python split_bytes.py path/to/file offset > new_file

В качестве теста я сгенерировал файл случайных данных объемом 1 ГБ:

dd if=/dev/urandom of=data.bin bs=64M count=16 iflag=fullblock

Затем запустил скрипт в этом файле:

python split_lines.py data.bin 10 > split-data.bin
2
17.01.2020, 17:34
1 ответ

Хотя вы специально просили не рекомендовать инструменты для проверки диска, я сделаю это и настоящим порекомендую :сам диск. Вы можете попросить накопитель выполнить тщательную внутреннюю самопроверку -.устранение всех возможных источников проблем, связанных с кэшем. Доступ к самопроверке -можно легко получить через gsmartcontrol:
.gsmartcontrol self-tests tab

Если вы действительно этого не хотите, вам все же следует рассмотреть возможность использования такого инструмента, как F3 . Он не только проверит, могут ли данные быть записаны, но также может проверить, могут ли записанные данные быть впоследствии прочитаны (, что, на мой взгляд, является более важной функцией носителя данных ).

При использовании dd conv=fdatasyncdd не завершается до того, как будет записан последний блок.

7
27.01.2020, 21:51

Теги

Похожие вопросы