Por que a opção de sincronização é usada com o comando 'dd'?

7

Seguindo as instruções na página , a página mostrou um comando dd e uma opção sync no final. O comando é o seguinte:

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

Eu sei o que é dd e como funciona, mas nunca ouvi falar ou usei a opção sync com isso e a entrada da página de manual é como:

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

O que é NUL e por que é preenchido com ibs-size e por que se preocupar em preencher os blocos de dados e usar a opção sync com o comando dd ? Por que não mantê-lo simples e fácil?

Quando tento executar sync com o comando como está com o local e os valores apropriados, recebo o seguinte erro:

dd: unrecognized operand ‘sync’
Try 'dd --help' for more information. 
    
por Chinmaya B 06.12.2015 / 19:53

4 respostas

17

Você está interpretando mal o comando. É:

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

sync é um comando separado, aqui. Veja man 1 sync :

NAME
       sync - flush file system buffers

SYNOPSIS
       sync [OPTION]

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

É óbvio porque é usado quando você pensa em armazenar em cache.

Quanto à opção dd que você lê, é um valor para o conv option :

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

Se foi usado (o que não é), seria usado assim:

dd ... conv=sync
    
por muru 06.12.2015 / 20:27
3

Por padrão, o dd lerá os dados em um bloco por vez, possivelmente lendo em um bloco menor que o especificado pelo usuário, no final do arquivo ou devido ao comportamento do dispositivo de origem; isso é chamado de registro parcial . Em seguida, ele irá escrever um bloco que é o mesmo tamanho que a quantidade que lê.

Dd repetirá isso até que a contagem especificada seja atingida ou veja eof na entrada ou erro na entrada ou saída. Quando terminar, dd informa o número de registros completos e parciais que leu e escreveu.

Esse comportamento é bom para copiar um arquivo comum dentro de um sistema de arquivos ou através de uma conexão de rede TCP, já que isso é considerado um fluxo de bytes. Mas outros objetos do sistema de arquivos, como DVDs brutos e fita magnética, exigem tamanhos de gravação que estão dentro de determinados intervalos e são um múltiplo arredondado de alguma quantia (como 512 ou 2048 bytes). Por exemplo, se você tem uma imagem de disco com 255 faixas de 63 setores de 512 bytes e deseja gravar em uma fita que requer um tamanho de bloco de 1024 bytes, é necessário fazer algo como

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

para garantir que o dd não tente escrever um bloco de 512 bytes no final. O bloco mais curto no final será preenchido com zeros ou espaços em branco. Preenchimento com zeros é uma escolha segura e comum. A opção para o dd pad com espaços em branco é útil em uma situação diferente - convertendo um arquivo que tem linhas de comprimento variável para um com linhas de comprimento fixo.

    
por Mark Plotnick 07.12.2015 / 01:08
0

Eu descobri que o sistema linux, não o dd, armazena em cache os buffers. Portanto, quando o comando dd for concluído, eu executo a sincronização como

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

Eu não usei nenhuma opção dd interna para causar a limpeza do buffer. No entanto, quando estou criando uma versão USB de uma distribuição, sou o único no computador, por isso não tenho escrúpulos quanto ao fato de meu comando postado estar causando danos. Como executo a sincronização como & amp; & amp;; a sincronização é feita com os direitos sudo e tenho certeza de que o USB que criei está completo.

    
por Leslie Satenstein 13.07.2017 / 19:23
0

Você pode usar a opção sync para saída, que está incluída em dd comand, por oflag símbolo:

xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M oflag=sync
    
por Rudolf Dovičín 10.12.2017 / 15:11

Tags