Tenho 200 GB de espaço livre em disco, 16 GB de RAM (dos quais ~ 1 GB é ocupado pelo desktop e pelo kernel) e 6 GB de swap.
Eu tenho um SSD externo de 240 GB, com 70 GB usados 1 e o restante livre, do qual preciso fazer backup no meu disco.
Normalmente, eu faria dd if=/dev/sdb of=Desktop/disk.img
o disco primeiro e depois o compactaria, mas fazer a imagem primeiro não é uma opção, pois isso exigiria muito mais espaço em disco do que eu tenho, mesmo que a etapa de compactação resulte em espaço livre sendo compactado para que o arquivo final pode caber facilmente no meu disco.
dd
grava em STDOUT por padrão e gzip
pode ler de STDIN, portanto, em teoria, eu posso escrever dd if=/dev/sdb | gzip -9 -
, mas gzip
leva muito mais tempo para ler bytes do que dd
produzi-los.
De man pipe
:
Os dados gravados na extremidade de gravação do pipe são armazenados em buffer pelo kernel até serem lidos na extremidade de leitura do pipe.
Visualizo um |
como sendo um tubo real - um aplicativo inserindo dados e o outro retirando dados da fila do tubo o mais rápido possível.
E quando o programa no lado esquerdo grava mais dados mais rapidamente do que o outro lado do canal pode esperar processá-los? Isso causará extrema utilização de memória ou troca, ou o kernel tentará criar um FIFO no disco, preenchendo o disco? Ou apenas falhará SIGPIPE Broken pipe
se o buffer for muito grande?
Basicamente, isso se resume a duas perguntas:
- Quais são as implicações e os resultados de colocar mais dados em um canal do que os lidos de cada vez?
- Qual é a maneira confiável de compactar um fluxo de dados em disco sem colocar todo o fluxo de dados não compactado no disco?
Nota 1: Não posso simplesmente copiar exatamente os primeiros 70 GB usados e espero obter um sistema ou sistema de arquivos em funcionamento, devido à fragmentação e outras coisas que exigirão que todo o conteúdo esteja intacto.
lzop
vez de gzip
; ele comprime muito mais rápido com apenas uma taxa de compressão ligeiramente mais baixa. Acho ideal para imagens de disco em que a velocidade de compactação pode ser um gargalo real.