Se eu criar uma imagem de disco e compactá- la com gzip / xz / etc, existe uma maneira de montá-la diretamente sem primeiro descompactá-la?
Digamos que eu usei
sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz
como montar a imagem original, sem antes criar uma cópia não compactada?
Ou eu usei
sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz
e o disco possui várias partições, isso dificultaria ainda mais?
Com uma imagem descompactada de um disco inteiro, o uso de kpartx
versões mais recentes losetup
do -P
flag com ele deve criar um loop para cada partição.
Mas existe uma maneira de montar / losetup / ler a imagem compactada?
Se não funcionar para o gzip / xz, existe algum método de compressão para o qual funcionaria?
Nota sobre Q duplicado
A duplicata atualmente sugerida
- Monte uma partição única a partir da imagem de todo o disco (dispositivo) , sendo um excelente Q útil
NÃO USE COMPRESSÃO E NÃO É DUPLICADO .
mount
não montará uma imagem compactada por si só.
partitioning
mount
backup
dd
disk-image
Xen2050
fonte
fonte
Respostas:
Você pode usar
squashfs
para compactar imagens de disco e montá-las.Crie a imagem do disco
Se você ainda não tem uma imagem de disco, use-a
dd
para criar uma:Comprima a imagem com squashfs
Instalar
squashfs
:Comprima a imagem:
Ou Transmita a compactação (não precisa de um arquivo dd temporário)
Elogios ao terminator14 no UbuntuForums.org . Definições / Explicações:
empty-dir
- dir "fonte". Basicamente, no nosso caso, apenas um diretório vazio para satisfazer o formato arg de entrada do mksquashfssquash.img
- o destino e o nome do arquivo do arquivo squashfs de saídasda_backup.img
- o nome do backup dd DENTRO do arquivo squashfsf
- especifica que sda_backup.img é um arquivo regular (em oposição a um diretório, dispositivo de bloco ou dispositivo de char)444
- permissões do arquivo sda_backup.img dentro da imagem squashfsroot root
- UID e GID para o arquivo sda_backup.img dentro da imagem squashfs. Pode ser especificado por números decimais ou por nomedd if=/dev/sda bs=4M
- o comando dd usado para ler o dispositivo que queremos fazer backupMonte a imagem
Primeiro monte a
squashfs
imagem:Isso apresentará a imagem de disco descompactada para você montar:
Ou, se for uma imagem de unidade completa (particionada), você pode usar
losetup
para anexar a imagem dd a um dispositivo de loop (possivelmente opcional) e, em seguida, encontrarkpartx -a
oupartprobe
separar as partições em dispositivos separados, ou mesmovgscan
/vgchange -ay
se houver LVM.fonte
ro,noload
opções:mount -o ro,noload /mnt/squash/sda1.img /mnt/sda1
Consegui que um servidor NBD "servisse" uma versão não compactada de um arquivo .gz ou .xz. Não tenho certeza se ele deve ler o arquivo compactado inteiro com muita frequência (apenas testado até o momento com arquivos pequenos em memória RAM), mas pelo menos funciona sem precisar extrair uma cópia inteira não compactada.
Visualizando uma imagem dd compactada gz / xz "on-the-fly"
Instale o nbdkit & client
Crie um arquivo de estilo "dd" de demonstração - um arquivo vazio de 50 milhões de arquivos com um sistema de arquivos ext e feche-o (opcional apenas para teste)
Comprima com gzip ou xz
Nota: Uma
xz
opção de--block-size=16MiB
deve oferecer melhor desempenho de acesso aleatório, mas à custa de menos compactação (talvez 1%?). Veja a descrição do plugin xz do nbdkit .Executar servidor na imagem COMPRESSED
ou para xz
O
--no-fork
comando diz ao servidor "Não entre em segundo plano", então é possível ver possíveis mensagens de erro e eliminá-lo com CTRL-C.-v
pode / irá mostrar muitas mensagens de status, especialmente ao ler.Executar cliente (em outro terminal / janela)
O
-nofork
é semelhante ao-no-fork
anterior, mas eu poderia não matar o cliente com CTRL-C,kill <pid>
ousudo kill <pid>
. Encerrar o servidor com CTRL-C interrompeu o servidor e o cliente.Observe que
/dev/nbd0
agora é idêntico à imagem UN-COMPRESSED/dev/nbd0
agora pode ser usado como a imagem não compactada; montado, ler / copiar comdd
, ou utilizaçãokpartx
,partprobe
,vgscan
/vgchange
, etc!Graças a Cristian Ciupitu no Unix e Linux , apesar de ter demorado um pouco mais para encontrar o plugin e fazer tudo funcionar.
fonte
nbdkit -v --no-fork -i 127.0.0.1 --filter=xz file ~/Downloads/50m.xz
funcionou muito bem com o mesmo comando do clientenbdkit 1.1.11
usa o protocolo NBD antigo, que difere do novo protocolo NBD, usadonbd-client 3.13
, mas você pode usar a versão nbd-client antes da 3.10, por exemplonbd-client 3.8 from Ubuntu precise 12.04 old LTS
[usar versões antigas apenas localmente por segurança!]Aqui está a minha maneira de fazê-lo, embora não conheça o equivalente a esse console,
.iso
arquivo comDisk Image Mounter
.fonte
dd if=/dev/zero
e rolo de arquivo) e, na verdade, adiciona 362k de dados (iso overhead, suponho). Graças, porém, a idéia é no caminho certo