Imagem de disco compactada no Linux

Imagem de disco compactada no Linux

Acabei de adquirir meu novo computador com um disco rígido muito maior. Acho que copiei todos os arquivos importantes, mas só para ter certeza, gostaria de manter uma imagem do meu disco antigo. Para economizar espaço, gostaria de compactá-lo, mas não encontrei opção para montar uma imagem compactada.

Os meus objetivos:

  • O resultado deve ser de fácil acesso
  • Não há necessidade de descompactar tudo antes de poder acessar qualquer coisa
  • Os arquivos devem ser localizados rapidamente - sem arquivo TAR/CPIO
  • O espaço necessário deve ser menor do que apenas copiar os arquivos

Então, idealmente, estou procurando um sistema de arquivos compactado somente leitura que eu possa criar em um arquivo e que cresça automaticamente.

Responder1

Use um software de análise forense comoGUYMAGER(código aberto, sourceforge.net). Possui uma interface agradável que permite criar rapidamente uma imagem de disco compactada de um disco rígido inteiro.

Use "Imagem forense avançada (.aff)" Isso cria um único arquivo compactado (bem, também cria um arquivo .info).

Para modificar a taxa de compactação padrão 1 (compressão mais rápida, mas menor). Se você tiver um computador rápido com muitos núcleos, poderá alterar isso criando /etc/guymager/local.cfg:

AffCompression = 3

9é a melhor compactação, porém mais lenta. 3dá uma boa compressão com bom desempenho.

Atualizar

A montagem não é tão simples quanto parece. Primeiro de tudo, você precisaAFFLIB(Ubuntu:) aptitude install afflib-tools. Agora você pode obter a imagem bruta do disco com[affuse][3] <image> <mount-point>

Mas, por algum motivo, a montagem da imagem bruta falha. parteddiz que a primeira partição começa com 1048576Bmas

mount -t ext4 -o loop,ro,offset=1048576 /mnt/backup.raw /mnt/backup

falha com o erro de montagem inútil usual:

mount: wrong fs type, bad option, bad superblock on /dev/loop0,
   missing codepage or helper program, or other error
   In some cases useful info is found in syslog - try
   dmesg | tail  or so

e dmesgdisse:

EXT4-fs (loop0): VFS: Can't find ext4 filesystem

Responder2

Como Matthias Krull sugere no comentário acima, qcow2 pode ser um bom formato que suporta compactação para armazenar uma imagem de disco. Ele será suportado por um bom tempo, pois é o formato para imagens de disco de máquinas virtuais QEMU. Aqui está um exemplo de comando que é compactado /dev/sdano arquivo de imagem compactado sda.qcow2. Por padrão, a compactação zlib é usada, mas acho que o zstd pode ter uma taxa de compactação melhor. 8 threads são usados ​​para aumentar o rendimento, mas você deve alterar isso para o número de núcleos de processador que possui.

qemu-img convert -c -p -S 512 -o compression_type=zstd" -f raw -O qcow2 -m 8 \
  /dev/sda sda.qcow2

Acesse a imagem como um dispositivo de bloco somente leitura NBD, dispositivo Network Block, pode ser usado da seguinte forma:

modprobe nbd
qemu-nbd -r -c /dev/nbd0 sda.qcow2
kpartx -av /dev/nbd0

Em seguida, o sistema de arquivos pode ser montado normalmente usando mounto dispositivo apropriado no formato /dev/mapper.

Responder3

Para sistemas de arquivos que suportam compactação de bloco, uma opção é armazenar a imagem do disco diretamente como um arquivo. Eu sei que o BTRFS suporta isso, mas provavelmente outros também. No caso do BTRFS, você provavelmente precisará habilitar a opção de montagem compress-forcepara substituir a heurística não compactada. Você também desejará criar um arquivo esparso. Isso pode ser feito com dd, como neste exemplo:

dd if=/dev/sda of=/mount/btrfs/sda.img conv=sparse,fsync iflag=nocache oflag=nocache

Isso criará um arquivo esparso, de modo que nenhum setor não ocupará espaço e o BTRFS compactará blocos compactáveis ​​(supondo que você tenha ativado isso). A compsizeferramenta pode ser usada para ver o quanto o arquivo está compactado. O uso dumostrará apenas o tamanho do arquivo descompactado menos os furos, portanto não será preciso.

Para montar qualquer sistema de arquivos na imagem, pode-se usar o seguinte:

LOOPDEV=$(losetup --show -f /mount/btrfs/sda.img)
kpartx -av "$LOOPDEV"
mount /dev/mapper/"$LOOPDEV"p3 # To mount the 3rd partition

Se você não usa um sistema de arquivos que tenha compactação nativa, por exemplo. ext4, você ainda pode usar esse método agrupando a imagem do disco em uma imagem do sistema de arquivos BTRFS. Isso poderia ser assim:

truncate -s 100G backup-sda.btrfs.img
mkfs.btrfs backup-sda.btrfs.img
mount -o compress-force=zstd:9 backup-sda.btrfs.img /media/tmp
cd /media/tmp
# Now do commands to create disk image as above

Este método permite mais controle sobre os algoritmos de compactação e nível de compactação do que o método usando qemu-img convert, que permite apenas a seleção do método de compactação, não do nível, e possui menos métodos de compactação disponíveis.

informação relacionada