Um truque que eu gosto de usar para esse tipo de coisa é cópia esparsa . Tente o seguinte:
$ dd if=/dev/zero of=some_file bs=1024 count=1 seek=1048576
$ ls -l some_file
-rw-r--r-- 1 jander jander 1073742848 Nov 20 23:38 foo
$ du some_file
12 some_file
O tamanho do arquivo é 1 GB, mas o espaço em disco usado é de 12kB. Agora, se você cat
deste arquivo, você terá 1GB de zeros. Louco, certo? O truque é que estamos apenas escrevendo o último 1kB do arquivo, então o Linux apenas registra que há apenas 1kB de dados reais e está em um offset de 1GB no arquivo. Em qualquer lugar, não há dados reais que serão lidos como zeros.
Clonagem esparsa de um disco arbitrário: o caminho mudo e universal
Para fazer uso disso para fazer backup de um sistema de arquivos, você pode preencher todos os espaços não utilizados no sistema de arquivos com zeros e, em seguida, usar dd
com a opção conv=sparse
para criar uma imagem esparsa. Para facilitar as coisas, clonaremos todo o disco de uma só vez.
$ mount /dev/sdc1 /mnt
$ dd if=/dev/zero of=/mnt/fill_up_with_zeroes bs=1048576
$ rm /mnt/fill_up_with_zeroes
$ umount /mnt
$ mount /dev/sdc2 /mnt
$ dd if=/dev/zero of=/mnt/fill_up_with_zeroes bs=1048576
$ rm /mnt/fill_up_with_zeroes
$ umount /dev/sdc2 /mnt
$ dd if=/dev/sdc of=sdc-sparse.img bs=1048576 conv=sparse
Em seguida, para restaurar:
$ dd if=sdc-sparse.img of=/dev/sdc bs=1048576
Tenha em atenção que, quando gravar a sua imagem num disco rígido real, não deverá fazer uma cópia esparsa. Se você fizer isso, você acabará corrompendo o sistema de arquivos: qualquer lugar que contivesse um bloco de zeros deveria conter um bloco de dados aleatórios em seu lugar!
Finalmente, se o laptop for novo e você não tiver excluído nenhum arquivo dele, não se preocupe em zerar o espaço não utilizado nas partições - elas provavelmente já estão zeradas.
Clonagem esparsa de uma partição NTFS: há uma ferramenta para isso
Agora, se você estiver trabalhando especificamente com sistemas de arquivos NTFS, há uma ferramenta para isso: ntfsclone
. Cria uma cópia esparsa de um sistema de arquivos NTFS. Ele fará um trabalho melhor que dd
e o fará mais rápido, porque sabe quais partes do sistema de arquivos NTFS podem ser ignoradas.
No entanto, você terá que manter cada partição em um arquivo separado nesse caso. Você também terá que fazer o backup de sua tabela de partições separadamente - usando dd bs=512 count=63
deve fazê-lo.