Why is the sync option used with the 'dd' command?

Following instructions on this page, the page showed в dd command and в sync option at the end. The command is the following:

xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M sync

I know what is dd and how it works but гve never heard of or used the sync option with it and its учебник page entry is like:

sync   pad every input block with NULs to  ibs-size;  when  used  with
       block or unblock, pad with spaces rather than NULs

What is NUL and why is it padded to ibs-size, and why bother padding the дата blocks and использовала the sync option with the dd command? Простой Why not keeping it and easy?

When I try to run sync with the command эксперт it is with the appropriate location and оцени I get the following ошибка:

dd: unrecognized operand ‘sync’
Try 'dd --help' for more information. 
12
задан 6 December 2015 в 17:41

4 ответа

Вы неправильно читаете команду. Это:

xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M 
sync

sync отдельная команда, здесь. См. man 1 sync :

NAME
       sync - flush file system buffers

SYNOPSIS
       sync [OPTION]

DESCRIPTION
       Force changed blocks to disk, update the super block.

Своего рода очевидное, почему это используется, как только Вы думаете о кэшировании.

Что касается dd опция Вы читаете, это - значение для conv опция :

Each CONV symbol may be:
   ascii  from EBCDIC to ASCII
   ...
   sync   pad every input block with NULs  to  ibs-size;  when  used  with
          block or unblock, pad with spaces rather than NULs

, Если это использовалось (который это не), это использовалось бы таким образом:

dd ... conv=sync
20
ответ дан 23 November 2019 в 03:32

Я нашел, что система Linux, не dd, кэширует буферы. Поэтому, когда команда dd завершилась, я выполняю синхронизацию как

sudo dd if=my.downloaded.iso of=/dev/sd(?) bs=1M && sync

, я не использовал внутренней dd опции вызвать буферное сбрасывание. Обычно, хотя, когда я создаю версию USB распределения, я - единственный на компьютере, таким образом, у меня нет приступов растерянности о моем отправленном вреде причиняющего команды. Так как я выполняю синхронизацию как & & синхронизация сделана с sudo правами, и я уверен, что USB, который я создаю, завершен.

0
ответ дан 23 November 2019 в 03:32

По умолчанию dd считает в данных один блок за один раз, возможно читая в более коротком блоке, чем определенный пользователь, или в конце файла или из-за поведения исходного устройства; это называют частичная запись . Это тогда выпишет блок, это - тот же размер как сумма, которую это считало.

Dd повторит это, пока указанное количество не будет достигнуто, или он видит eof на входе или ошибку на вводе или выводе. Когда это заканчивается, dd сообщает о количестве полных и частичных записей, которые это считало и записало.

Это поведение хорошо для копирования обычного файла в файловой системе или по сетевому соединению TCP, так как это рассмотрело поток байтов. Но другие объекты файловой системы, такие как необработанные DVD и магнитная лента, требуют размеров записи, которые являются в определенных диапазонах и являются раундом несколько из некоторой суммы (такие как 512 или 2 048 байтов). Например, если у Вас есть образ диска, который является 255 дорожками 63 512-байтовых секторов, и хотят записать в ленту, которая требует размера блока 1 024 байтов, необходимо было бы сделать что-то как

dd if=disk.img of=/dev/rmt0 bs=1k conv=sync

, чтобы удостовериться, что dd не пытается выписать 512-байтовый блок в конце. Более короткий блок в конце будет дополнен, обнуляет или очищает. Дополнение обнуляет, безопасный, общий выбор. Опция для dd для дополнения пробелами полезна в другой ситуации - преобразование файла, который имеет строки переменной длины одной со строками фиксированной длины.

3
ответ дан 23 November 2019 в 03:32

Можно использовать sync опция для вывода, который включен в dd команда, oflag символ:

xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M oflag=sync
0
ответ дан 23 November 2019 в 03:32

Другие вопросы по тегам:

Похожие вопросы: