Wenn ich ein Disk-Image mache und komprimiere sie mit gzip / XZ / etc ist es eine Möglichkeit , es zu montieren direkt , ohne sie vorher dekomprimiert?
Angenommen, ich habe verwendet
sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz
Wie kann ich das Originalbild mounten, ohne zuerst eine unkomprimierte Kopie zu erstellen?
Oder ich habe verwendet
sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz
und die Festplatte hat mehrere Partitionen. Würde das die Arbeit erschweren?
Mit einem unkomprimierten Image einer ganzen Festplatte, die dann kpartx
oder neuere Versionen von losetup
mit verwendet wird-P
flag eine Schleife für jede Partition erstellt werden.
Aber gibt es eine Möglichkeit, das komprimierte Bild zu mounten / zu verlieren / zu lesen?
Wenn es für gzip / xz nicht funktioniert, gibt es eine Komprimierungsmethode, für die dies funktionieren würde?
Hinweis zum Duplikat Q.
Das aktuell vorgeschlagene Duplikat
- Mounten Sie eine einzelne Partition vom Image der gesamten Festplatte (des Geräts) , während Sie ein hervorragendes nützliches Q sind
Benutzt überhaupt keine COMPRESSION und kein Duplikat .
mount
wird ein komprimiertes Image nicht selbst mounten.
quelle
Antworten:
Sie können
squashfs
damit Disk-Images komprimieren und dann mounten.Erstellen Sie das Disk-Image
Wenn Sie noch kein Disk-Image haben
dd
, erstellen Sie eines:Komprimieren Sie das Bild mit Squashfs
Installieren
squashfs
:Komprimieren Sie das Bild:
Oder streamen Sie die Komprimierung (benötigen Sie keine temporäre dd-Datei)
Kompliment an terminator14 bei UbuntuForums.org . Definitionen / Erklärungen:
empty-dir
- "Quell" -Dir. Grundsätzlich in unserem Fall nur ein leeres Verzeichnis, um das Eingabe-Arg-Format von mksquashfs zu erfüllensquash.img
- Ziel und Dateiname der Ausgabe-Squashfs-Dateisda_backup.img
- Der Name der DD-Sicherung IN der Squashfs-Dateif
- Gibt an, dass sda_backup.img eine reguläre Datei ist (im Gegensatz zu einem Verzeichnis, einem Blockgerät oder einem Zeichengerät).444
- Berechtigungen der Datei sda_backup.img im squashfs-Imageroot root
- UID und GID für die Datei sda_backup.img im squashfs-Image. Kann durch Dezimalzahlen oder durch Namen angegeben werdendd if=/dev/sda bs=4M
- Der Befehl dd zum Lesen des Geräts, das gesichert werden sollMontiere das Bild
Montieren Sie zuerst das
squashfs
Bild:Dadurch wird das nicht komprimierte Disk-Image angezeigt, das Sie bereitstellen können:
Oder wenn es ein voller Antrieb Bild ist (partitioniert) Sie nutzen könnten
losetup
das dd Bild zu einem Loop - Gerät (möglicherweise optional) befestigen und dannkpartx -a
oderpartprobe
zu finden und die Partitionen separater Geräte zu trennen, oder auchvgscan
/vgchange -ay
wenn es LVM ist.quelle
Ich konnte einen NBD-Server dazu bringen, eine nicht komprimierte Version einer .gz- oder .xz-Datei "bereitzustellen". Ich bin mir nicht sicher, ob es die gesamte komprimierte Datei sehr oft lesen muss (bisher nur mit kleinen Dateien im RAM getestet), aber zumindest funktioniert es, ohne dass eine ganze nicht komprimierte Kopie extrahiert werden muss.
Anzeigen eines gz / xz-komprimierten dd-Bildes "on-the-fly"
Installieren Sie nbdkit & client
Erstellen Sie eine Demo-Datei im "dd" -Stil - eine leere 50-MB-Datei mit einem ext-Dateisystem und komprimieren Sie sie (nur zum Testen optional)
Dann entweder mit gzip oder xz komprimieren
Hinweis: Eine
xz
Option von--block-size=16MiB
sollte eine bessere Direktzugriffsleistung bieten , jedoch auf Kosten einer geringeren Komprimierung (möglicherweise 1%?). Siehe die Beschreibung des xz-Plugins des nbdkit .Führen Sie den Server auf dem COMPRESSED-Image aus
oder für xz
Das
--no-fork
sagt dem Server "Nicht in den Hintergrund treten", so dass es etwas einfacher ist, mögliche Fehlermeldungen zu sehen und sie mit STRG-C zu beenden.-v
kann / wird zu viele Statusmeldungen anzeigen, insbesondere beim Lesen.Client ausführen (in einem anderen Terminal / Fenster)
Das
-nofork
ist ähnlich wie-no-fork
oben, aber ich kann nicht den Client mit CTRL-C, tötenkill <pid>
, odersudo kill <pid>
. Durch Beenden des Servers mit STRG-C wurden sowohl Server als auch Client gestoppt.Beachten Sie, dass dies
/dev/nbd0
jetzt mit dem UN-COMPRESSED-Bild identisch ist/dev/nbd0
kann jetzt genau wie das unkomprimierte Bild verwendet werden; angebracht ist , lesen / kopieren mitdd
oder Verwendungkpartx
,partprobe
,vgscan
/vgchange
, etc!Dank Cristian Ciupitu unter Unix und Linux , obwohl es etwas länger gedauert hat , das Plugin zu finden und alles zusammenzubringen.
quelle
nbdkit -v --no-fork -i 127.0.0.1 --filter=xz file ~/Downloads/50m.xz
funktionierte großartig mit dem gleichen Client-Befehlnbdkit 1.1.11
verwendet altes Protokoll NBD, die sie von neuem NBD - Protokoll, dasnbd-client 3.13
, aber Sie ca NBD-Client - Version vor 3.10, zum Beispiel verwendennbd-client 3.8 from Ubuntu precise 12.04 old LTS
[Sicherheitsgründe nur lokal Gebrauch alte Versionen!]Hier ist meine Vorgehensweise, ich kenne das Konsolenäquivalent dazu jedoch nicht.
.iso
Datei mit einDisk Image Mounter
.quelle
dd if=/dev/zero
und einer Dateirolle) versucht und es werden tatsächlich 362 KB Daten hinzugefügt (ISO-Overhead, nehme ich an). Vielen Dank, die Idee ist auf dem richtigen Weg