3

Я вижу примеры онлайн все время использования dd в сочетании с pv чтобы показать прогресс ... Но что-то, чего я не понимаю, это то, что pv вполне способен выполнить задачу полностью самостоятельно. Так зачем использовать dd ? Есть ли какое-то преимущество у dd что у pv нет?

Примеры использования как dd и pv . Некоторые из них действительно сложны ...

dd if=/dev/sda | pv | dd of=/mnt/backup.img
dd if=/dev/sda | pv -s 10G | dd of=/mnt/backup.img
dd if=/dev/sda | (pv -s `fdisk -l /dev/sda | grep -o '[0-9]*\{1\} MB' | awk '{print $1}'`m) | dd of=/mnt/backup.img

Вы можете добиться того же, используя только pv , выполнив

pv /dev/sda > /mnt/backup.img

1 ответ1

3

Что ж, pv просто дает представление о работе канала, поэтому реальный вопрос в том, эквивалентен ли канал / перенаправление dd. Ответ, конечно, нет.

В то время как простые случаи использования dd могут работать аналогично перенаправлению ввода-вывода или конвейерной обработке, dd - довольно сложный инструмент с множеством функций, связанных с преобразованием файловых данных (piping едва знает, что такое файл, не говоря уже о порядке байтов / кодирование так и есть) тогда как перенаправление просто выталкивает биты, а pv просто наблюдает за данными, проходящими через канал, не понимая этого больше, чем просто считая байты.

dd понимает структуру диска как блоки и адреса, о которых pv ничего не знает. dd взаимодействует с ядром на уровне драйвера, в то время как pv выше значительной абстракции ввода-вывода.

например, dd может получить резервную копию MBR диска (всегда в 63-м блоке) с помощью:

dd if=/dev/sda of=MBR_boot.img bs=512 count=1 skip=62

Нет никакого чистого способа сделать это с перенаправлением / передачей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .