Вопрос или проблема
Во-первых, поскольку некоторые могут спросить, система XUbuntu — 24.04
Я выполняю запрос, используя команду dd, чтобы скопировать определенное количество блоков, ответ показывает на два блока меньше этого числа – без ошибок. Почему такая разница?
Перед командой dd я использую isoinfo
:
$ isoinfo -d -i /dev/sr0
CD-ROM в формате ISO 9660
Идентификатор приложения: NERO BURNING ROM
Логический размер блока: 2048
Размер тома: 303507
Найден Joliet с уровнем UCS 3
Нет Rock Ridge
Затем я запускаю dd
:
$ dd if=/dev/sr0 bs=2048 of=a.iso count=303507
303505+0 записей в
303505+0 записей из
621578240 байт (622 МБ, 593 Миб) скопировано, 133.864 с, 4.6 МБ/с
Почему разница в два блока?
Ответ или решение
Когда вы используете команду dd
для копирования данных с помощью следующей команды:
dd if=/dev/sr0 bs=2048 of=a.iso count=303507
вы указываете count=303507
, что предполагает, что вы хотите скопировать 303507 логических блоков по 2048 байт каждый. Однако вы получили результат, в котором указано 303505+0 records in
, что на два блока меньше, чем ожидаемо.
Причины этой разницы могут быть следующими:
-
Размер диска: Возможно, фактический размер данных на вашем диске (в данном случае, CD-ROM) реализован в меньшем количестве блоков, чем вы ожидаете. Хотя команда
isoinfo
сообщает о размере 303507, на практике это может включать неиспользуемые блоки или разницы в нумерации блоков. -
Кэширование и взаимодействие с устройством: При работе с низкоуровневыми устройствами, такими как CD-ROM, может происходить некоторая форма кэширования, из-за чего система считает, что два блока не были успешно скопированы, даже если команда
dd
не выдает ошибок. -
Управляющие и системные блоки: Некоторые накопители могут резервировать или не отображать некоторые блоки для управления устройством или для других внутренний нужд, которые могут не быть частью фактического содержимого.
Чтобы разобраться в проблеме более подробно, вы можете предпринять следующие шаги:
-
Попробуйте выполнить команду без указания
count
, чтобы скопировать все доступные блоки:dd if=/dev/sr0 bs=2048 of=a.iso
-
После завершения копирования проверьте размер получившегося файла с помощью
ls -l a.iso
, чтобы убедиться, что файл корректен и нескаживает данные. -
Если необходим точный размер и вы хотите избежать проблем с разным количеством блоков при копировании, можно также использовать
ddrescue
, который более устойчив к ошибкам чтения.
Эти шаги помогут вам прояснить ситуацию с различием в количестве скопированных блоков и дадут больше информации о процессе копирования данных с вашего CD-ROM.