dd копии различное количество блоков

Вопрос или проблема

Во-первых, поскольку некоторые могут спросить, система 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, что на два блока меньше, чем ожидаемо.

Причины этой разницы могут быть следующими:

  1. Размер диска: Возможно, фактический размер данных на вашем диске (в данном случае, CD-ROM) реализован в меньшем количестве блоков, чем вы ожидаете. Хотя команда isoinfo сообщает о размере 303507, на практике это может включать неиспользуемые блоки или разницы в нумерации блоков.

  2. Кэширование и взаимодействие с устройством: При работе с низкоуровневыми устройствами, такими как CD-ROM, может происходить некоторая форма кэширования, из-за чего система считает, что два блока не были успешно скопированы, даже если команда dd не выдает ошибок.

  3. Управляющие и системные блоки: Некоторые накопители могут резервировать или не отображать некоторые блоки для управления устройством или для других внутренний нужд, которые могут не быть частью фактического содержимого.

Чтобы разобраться в проблеме более подробно, вы можете предпринять следующие шаги:

  • Попробуйте выполнить команду без указания count, чтобы скопировать все доступные блоки:

    dd if=/dev/sr0 bs=2048 of=a.iso
  • После завершения копирования проверьте размер получившегося файла с помощью ls -l a.iso, чтобы убедиться, что файл корректен и нескаживает данные.

  • Если необходим точный размер и вы хотите избежать проблем с разным количеством блоков при копировании, можно также использовать ddrescue, который более устойчив к ошибкам чтения.

Эти шаги помогут вам прояснить ситуацию с различием в количестве скопированных блоков и дадут больше информации о процессе копирования данных с вашего CD-ROM.

Оцените материал
Добавить комментарий

Капча загружается...