Sıkıştırılmış disk görüntüsü nasıl monte edilir?


12

Bir disk görüntüsü yapmak ve varsa kompres ile gzip / xz / etc bunu sıkıştırılmış açma ilk olmaksızın doğrudan bağlaması için bir yol var mı?

Diyelim ki kullandım

sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz

önce sıkıştırılmamış bir kopya oluşturmadan orijinal görüntüyü nasıl bağlayabilirim?

Yoksa kullandım

sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz

ve diskin birden fazla bölümü var, bu onu zorlaştırır mı?

Bir sonra kullanarak bütün diskin sıkıştırılmamış bir görüntü ile kpartxveya yeni sürümlerinde losetup's ile -Pbayrağı her bölüm için bir döngü oluşturmalıdır.

Ancak sıkıştırılmış görüntüyü bağlamanın / kaybetmenin / okumanın bir yolu var mı?

Eğer gzip / xz için çalışmazsa, bunun işe yarayacağı herhangi bir sıkıştırma yöntemi var mı?


Yinelenen Q hakkında not

Şu anda önerilen kopya

SIKIŞTIRMAYI KULLANMAMAKTIR ve ÇİFT DEĞİLDİR .

mount sıkıştırılmış bir görüntüyü tek başına bağlamaz.


Size bunun kesinlikle mümkün olduğunu söyleyebilirim. Ancak size nasıl atm olduğunu söyleyemem çünkü talimatlar 2 harici HDD'de ve şu anda ikisine de erişimim yok ama bunun işe yaradığını size bildirmek istiyorum. Ben bir cevap ile geri geleceğim (ve o zamana kadar kimse başka bir yayın).
UTF-8


1
@ UTF-8 Bu cesaret verici, teşekkürler. FYI, asıl amaç, neredeyse boş olan veya kolayca sıkıştırılabilir çok fazla veri içeren bir sürücü / bölümün daha küçük bir yedeğini oluşturmak ve bir sürü ekstra veri yazmadan veya ayıklamak için bir ton boş alana ihtiyaç duymadan okuyabilmektir
Xen2050


2
@ bodhi.zazen Pardon? Belki açıklığa kavuşturmalıyım, mount görüntüleri otomatik olarak açmaz , bu yüzden bu Q askubuntu.com/questions/69363'ün bir kopyası değildir (belki de şakayı kaçırdım, umarım sıkıştırmak tek cevap değildir :)
Xen2050

Yanıtlar:


10

Sen kullanabilirsiniz squashfskompres diski görüntülere ve sonra onları monte edin.

Disk görüntüsünü oluşturma

Henüz bir disk resminiz yoksa ddoluşturmak için kullanın :

dd if=/dev/sda1 of=/tmp/sda1.img bs=4M

Resmi squashfs ile sıkıştır

Kurulum squashfs:

apt-get install squashfs-tools

Görüntüyü sıkıştır:

mksquashfs /tmp/sda1.img /tmp/sda1.squash.img

Veya sıkıştırmayı izleyin (geçici bir dd dosyasına gerek yoktur)

mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'

Övgü UbuntuForums.org de terminator14 . Tanımlar / açıklamalar:

  • empty-dir- "kaynak" yön. Temelde bizim durumumuzda, mksquashfs'in giriş arg formatını karşılamak için sadece boş bir dir
  • squash.img - çıktı squashfs dosyasının hedefi ve dosya adı
  • sda_backup.img - squashfs dosyasının İÇİNDEKİ yedeklemenin adı
  • f - sda_backup.img dosyasının normal bir dosya olduğunu belirtir (bir dizin, blok cihaz veya karakter cihazının aksine)
  • 444 - squashfs görüntüsünün içindeki sda_backup.img dosyasının izinleri
  • root root- Squashfs görüntüsünün içindeki sda_backup.img dosyası için UID ve GID. Ondalık sayılarla veya adla belirtilebilir
  • dd if=/dev/sda bs=4M - yedeklemek istediğimiz cihazı okumak için kullanılan dd komutu

resmi bağla

İlk önce squashfsgörüntüyü monte edin :

mkdir /mnt/squash
mount /tmp/sda1.squash.img /mnt/squash

Bu, bağlamanız için sıkıştırılmamış disk görüntüsünü gösterir:

mkdir /mnt/sda1
mount /mnt/squash/sda1.img /mnt/sda1

Bu tam bir sürücü görüntü Ya da eğer sen kullanabilirsiniz (bölümlenmiş) losetupsonra bir döngü cihazına (muhtemelen opsiyonel) ve dd resim eklemek için kpartx -aya partprobeda bulmak ve ayrı cihazlara bölümleri ayırmak veya vgscan/ vgchange -ayLVM varsa.


2
Geçici düz dd dosyasına ihtiyaç duymamak için bazı anında squashfs bilgileri ekledim.
Squashfs

Bu bir şekilde birden çok bölüm içeren bir tam disk görüntüsü ile de çalışır mı?
friederbluemle


Dosya sistemi türüne bağlı olarak, montaj aşağıdaki ro,noloadgibi seçenekler gerektirebilir :mount -o ro,noload /mnt/squash/sda1.img /mnt/sda1
HackerBoss

7

Bir .gz veya .xz dosyasının sıkıştırılmamış bir sürümünü "sunmak" için bir NBD sunucusu elde edebildim. Sıkıştırılmış dosyanın tamamını çok sık okumak zorunda olup olmadığından emin değilim (şu ana kadar ram'daki küçük dosyalarla test edildi), ancak en azından sıkıştırılmamış bir kopyayı çıkarmak zorunda kalmadan çalışıyor.

Gz / xz Sıkıştırılmış dd görüntüsünü "anında" görüntüleme

  1. Nbdkit ve istemciyi yükle

    apt install nbdkit nbd-client
    
  2. Demo "dd" tarzı bir dosya oluşturun - ext dosya sistemine sahip boş bir 50M dosyası ve zip (sadece test için isteğe bağlıdır)

    fallocate -l 50M 50m
    mkfs.ext3 -v 50m
    

    Sonra gzip veya xz ile sıkıştırın

    gzip -vk9 50m
    xz -v9k 50m
    

    Not: Bir xzseçenek --block-size=16MiBdaha iyi rastgele erişim performansı sağlamalıdır, ancak daha az sıkıştırma pahasına (belki% 1?). Bkz nbdkit en xz eklentisi açıklaması .

  3. COMPRESSED görüntüde sunucuyu çalıştır

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-gzip-plugin.so file=~/Downloads/50m.gz
    

    veya xz için

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-xz-plugin.so file=~/Downloads/50m.xz
    

    --no-forkSunucu söyler "arka plana çatal değil Do" biraz daha kolaydır olası hata iletilerini görme ve CTRL-C ile onu öldürme böylece.

    -v özellikle okurken çok fazla durum mesajı gösterebilir / gösterecektir.

  4. İstemciyi çalıştır (başka bir terminalde / pencerede)

    sudo nbd-client -nofork 127.0.0.1 10809 /dev/nbd0
    

    -noforkBenzer -no-forkyukarıda ama olabilir değil CTRL-C ile müşteri öldürmek, kill <pid>ya da sudo kill <pid>. Sunucuyu CTRL-C ile bitirmek hem sunucuyu hem de istemciyi durdurdu.

  5. Bunun /dev/nbd0UN-COMPRESSED görüntüsüyle aynı olduğunu gözlemleyin

    $ sudo diff -s /dev/nbd0 ~/Downloads/50m
    Files /dev/nbd0 and /home/user/Downloads/50m are identical
    

    /dev/nbd0şimdi tıpkı sıkıştırılmamış görüntü gibi kullanılabilir; okuma / monte ile kopyalama ddveya kullanım kpartx, partprobe, vgscan/ vgchange, vb!

Unix ve Linux'ta Cristian Ciupitu sayesinde , eklentiyi bulmak ve her şeyin bir araya gelmesini biraz daha kazmak gerekiyordu.


Fedora 31'de nbdkit -v --no-fork -i 127.0.0.1 --filter=xz file ~/Downloads/50m.xzaynı müşteri komutuyla harika çalıştı
EkriirkE

Ubuntu üzerinde xenial 16.04 LTS nbdkit 1.1.11 , kullanılan yeni NBD protokolünden farklı olan eski NBD protokolünü kullanır nbd-client 3.13, ancak 3.10'dan önce nbd-istemci sürümünü nbd-client 3.8 from Ubuntu precise 12.04 old LTSkullanabilirsiniz , örneğin [eski sürümleri sadece güvenlik için yerel olarak kullanın!]
user1742529

0

İşte bunu yapmanın yolu, bunun konsolu eşdeğerini bilmiyorum,

  • Klasörü bir iso olarak sıkıştırın. resim açıklamasını buraya girin
  • .isoDosyayı ile bağlayın Disk Image Mounter. resim açıklamasını buraya girin
  • Tada Sıkıştırılmış iso'yu ambalajından çıkarmadan açarım. resim açıklamasını buraya girin

4
Bu yöntem verileri gerçekten sıkıştırıyor mu? Sıkıştırma kullanmayan düz bir iso9660 görüntüsü (dosya silindiri ile mi?) Kullanıyor gibi görünüyor. Tüm sıfır ( dd if=/dev/zerove dosya silindiri) 100MB dosya üzerinde denedim ve aslında 362k veri (iso yükü sanırım) ekler. Teşekkürler, ancak fikir doğru yolda
Xen2050

Üzgünüz ama sıkıştırma teknolojileri hakkında herhangi bir fikrim yok ama başka bir sıkıştırma formatı denerseniz, ben de bunu dosya silindiri ile listeleyebilirsiniz, ancak bu dosyayı okumak istiyorsanız sadece belirli bir dosyayı ayıklamanız gerekir.
16:33, merhaba
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.