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