Como eu posso arquivar a saída do dd diretamente possivelmente sem usar nenhuma compressão?

3

Já foi determinado em isto pergunta que tar não pode ler entrada de stdin .

De que outra forma uma saída dd pode ser arquivada diretamente, possivelmente sem usar nenhuma compactação? A finalidade de fazer tudo em uma única tarefa é evitar gravar a saída dd no disco de destino duas vezes (uma vez como um arquivo não processado e uma vez como um arquivo morto) e evitar executar duas tarefas diferentes, o que é um desperdício de tempo (uma vez que o arquivo de entrada deve ser lido e escrito e a saída deve ser lida, processada e gravada novamente) e pode ser impossível se a unidade de destino estiver quase cheia.

Estou planejando fazer vários backups de unidades, partições e pastas, e gostaria de me beneficiar da facilidade de ter tudo armazenado em um único arquivo e da velocidade de cada tarefa de backup / potencial de restauração. / p>     

por kos 18.02.2015 / 21:25

1 resposta

4

Se você quiser despejar um dispositivo de bloco inteiro em um arquivo, tar não será de nenhuma utilidade, porque não funciona com dispositivos de bloco. Em vez disso, você precisará usar dd ou similar:

dd if=/dev/sdX of=/path/to/backup bs=16m

Mesmo assim, seria melhor usar pelo menos um pouco de compactação, desde que isso não atrase muito a transferência. Em suma, você precisa de um algoritmo de compactação com uma taxa de transferência não muito menor que a do seu meio de armazenamento mais lento. Existem vários algoritmos de compressão. Os mais notórios são Lempel – Ziv – Oberhumer , seu derivado L4Z e Snappy . Há uma comparação de vários algoritmos de compactação, incluindo os três na página do projeto L4Z :

Name            Ratio  C.speed D.speed
                        MB/s    MB/s
LZ4 (r101)      2.084    422    1820
LZO 2.06        2.106    414     600
QuickLZ 1.5.1b6 2.237    373     420
Snappy 1.1.0    2.091    323    1070
LZF             2.077    270     570
zlib 1.2.8 -1   2.730     65     280
LZ4 HC (r101)   2.720     25    2080
zlib 1.2.8 -6   3.099     21     300

Para o bem desta resposta, vou escolher um exemplo com o LZO, porque está prontamente disponível nos repositórios da Canonical na forma de lzop , mas em última análise, todos esses compressores de fluxo têm front-ends que lêem a entrada padrão e gravam na saída padrão.

dd if=/dev/sdX bs=16m | lzop > /path/to/backup.lzo

Se você quiser trabalhar na mesma máquina durante o backup, convém usar ionice e / ou nice / schedtool :

ionice -c 3 dd if=/dev/sdX bs=16m | ionice -c 3 schedtool -B -n 10 -e lzop > /path/to/backup.lzo
    
por David Foerster 08.03.2015 / 23:21