Вот решение на 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
Хотя вы специально просили не рекомендовать инструменты для проверки диска, я сделаю это и настоящим порекомендую :сам диск. Вы можете попросить накопитель выполнить тщательную внутреннюю самопроверку -.устранение всех возможных источников проблем, связанных с кэшем. Доступ к самопроверке -можно легко получить через gsmartcontrol
:
.
Если вы действительно этого не хотите, вам все же следует рассмотреть возможность использования такого инструмента, как F3 . Он не только проверит, могут ли данные быть записаны, но также может проверить, могут ли записанные данные быть впоследствии прочитаны (, что, на мой взгляд, является более важной функцией носителя данных ).
При использовании dd conv=fdatasync
dd не завершается до того, как будет записан последний блок.