Какие другие инструменты я должен использовать для чтения и записи файлов с усечением, поиском и пропуском. Параметры командной строки dd кажутся неудобными и чуждыми, и мне не нравится выбирать между медленным, но точным режимом поиска ( bs=1
) и быстрым, но негибким режимом ( bs=4k
или чем-то еще).
Существуют ли более современные инструменты для чтения 555 байтов из одного файла (или канала, сокета или dev) из позиции 31337 и записи их в другой файл в позиции 128205 (с использованием блоков 512 + 43) с усечением или без него?
dd
. Вы всегда можете поместить оболочку сценария оболочки, если вам не нравится интерфейс.dd
находится в стандарте POSIX , что является огромным плюсом.status=noxfer
не используется по умолчанию и не работает, и которая мне нужнаiflag=fullblock
(пропустите в некоторых скриптах => неработающие данные).bs=1
=> Весь конвейер работает медленно. Например, я могу захотеть записать видеофайл, начиная с определенного кадра. 2. «Требуется некоторая арифметика» => не очень подходит для односложных и обычных команд оболочки.dd conv=seek_bytes
сделаетseek
работу с байтовой точностью.Ответы:
Есть инструмент
ddrescue
(будьте осторожны, есть иdd_rescue
другая программа с почти такой же функциональностью). Он использует более знакомый синтаксис с одиночной чертой для короткой или двойной чертой для длинных опций. Со страницы руководства:источник
ddrescue - -
->Infile and outfile are the same.
,ddrescue /dev/stdin /dev/stdout
->Infile and outfile are the same.
. Плохое начало истории ...dd_rescue
. Выдает предупреждение, что файл (stdin) не доступен для поиска, но продолжается. Вы можете попробовать. Тем не менее,ddrescue
чувствует себя более полнофункциональным и зрелым.ddrescue
верно, трубы не ищут. Если вы хотите начать чтение с определенной точки в файле, вам нужно предоставить ему доступ к рассматриваемому файлу, а не к данным, переданным из другой программы. Также имейте в виду, что использование конвейеров борется с вашим желанием максимальной скорости, поскольку единственный способ эмулировать поиск в канале - это читать и отбрасывать части, которые вы не хотите обрабатывать. Поиск в реальном файле намного эффективнее.dcfldd - это еще одна альтернатива dd. Он не отвечает на вопрос ОП о гибкости поиска ввода / вывода, но может быть полезен для других, прибывших сюда через поиск в Google.
Он основан на gnu dd, со следующими дополнительными функциями:
источник
Хорошая альтернатива есть
pv
. Он не только автоматически вычисляет наиболее эффективный размер блока, существенно ускоряя процесс, но и обеспечивает прогресс, помимо прочего. Это простое использование:Хорошо работает и со сжатием. Быстрый способ сделать резервную копию и сжать диск за один ход:
Вы можете узнать больше здесь .
источник