Si je crée une image disque et la compresse avec gzip / xz / etc, est-il possible de la monter directement sans la décompresser au préalable?
Dis que j'ai utilisé
sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz
comment puis-je monter l'image d'origine, sans créer d'abord une copie non compressée?
Ou j'ai utilisé
sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz
et le disque a plusieurs partitions, cela rendrait-il la tâche plus difficile?
Avec une image non compressée d'un disque entier, l'utilisation de kpartx
versions plus récentes ou losetup
avec son -P
indicateur devrait créer une boucle pour chaque partition.
Mais existe-t-il un moyen de monter / perdre / lire l'image compressée?
Si cela ne fonctionne pas pour gzip / xz, existe-t-il une méthode de compression pour laquelle cela fonctionnerait?
Remarque sur les doublons Q
Le doublon actuellement suggéré
- Montez une partition unique à partir de l'image de tout le disque (périphérique) , tout en étant un excellent Q utile
EST-CE PAS UTILISER COMPRESSION , et ne est pas dupliquée .
mount
ne montera pas une image compressée seule.
la source
Réponses:
Vous pouvez utiliser
squashfs
pour compresser les images de disque puis les monter.Créer l'image disque
Si vous n'avez pas encore d'image disque, utilisez-en
dd
pour en créer une:Compressez l'image avec des squashfs
Installer
squashfs
:Compressez l'image:
Ou diffuser la compression (pas besoin d'un fichier dd temporaire)
Compliments à terminator14 sur UbuntuForums.org . Définitions / explications:
empty-dir
- dir "source". Fondamentalement dans notre cas, juste un répertoire vide pour satisfaire le format d'arg d'entrée de mksquashfssquash.img
- la destination et le nom du fichier squashfs de sortiesda_backup.img
- le nom de la sauvegarde dd DANS le fichier squashfsf
- spécifie que sda_backup.img est un fichier normal (par opposition à un répertoire, un périphérique bloc ou un périphérique char)444
- autorisations du fichier sda_backup.img à l'intérieur de l'image squashfsroot root
- UID et GID pour le fichier sda_backup.img à l'intérieur de l'image squashfs. Peut être spécifié par des nombres décimaux ou par son nomdd if=/dev/sda bs=4M
- la commande dd utilisée pour lire le périphérique que nous voulons sauvegarderMontez l'image
Montez d'abord l'
squashfs
image:Cela présentera l'image disque non compressée à monter:
Ou s'il s'agit d'une image de lecteur complète (partitionnée), vous pouvez utiliser
losetup
pour attacher l'image dd à un périphérique en boucle (éventuellement en option), puiskpartx -a
oupartprobe
pour rechercher et séparer les partitions sur des périphériques distincts, ou mêmevgscan
/vgchange -ay
s'il y a LVM.la source
ro,noload
options, comme ceci:mount -o ro,noload /mnt/squash/sda1.img /mnt/sda1
J'ai pu obtenir un serveur NBD pour "servir" une version non compressée d'un fichier .gz ou .xz. Je ne sais pas s'il doit lire l'intégralité du fichier compressé très souvent (testé jusqu'à présent uniquement avec de petits fichiers en RAM) mais au moins cela fonctionne sans avoir à extraire une copie non compressée entière.
Visualisation d'une image dd compressée gz / xz "à la volée"
Installer nbdkit et client
Créer un fichier de style "dd" de démonstration - un fichier vide de 50 Mo avec un système de fichiers ext et le compresser (facultatif pour les tests uniquement)
Compressez ensuite avec gzip ou xz
Remarque: Une
xz
option de--block-size=16MiB
devrait donner de meilleures performances d'accès aléatoire, mais au détriment de moins de compression (peut-être 1%?). Voir la description du plugin xz du nbdkit .Exécuter le serveur sur une image COMPRESSÉE
ou pour xz
Le
--no-fork
dit au serveur "Ne pas fourrer en arrière-plan", donc voir les messages d'erreur possibles et les tuer avec CTRL-C est un peu plus facile.-v
peut / affichera trop de messages d'état, en particulier lors de la lecture.Exécuter le client (dans un autre terminal / fenêtre)
Le
-nofork
est similaire à-no-fork
ci-dessus, mais je n'ai pas pu tuer le client avec CTRL-C,,kill <pid>
ousudo kill <pid>
. La fin du serveur avec CTRL-C a arrêté le serveur et le client.Observez que
/dev/nbd0
c'est maintenant identique à l'image UN-COMPRESSED/dev/nbd0
peut maintenant être utilisé comme l'image non compressée; monté, lecture / copie avecdd
ou utilisationkpartx
,partprobe
,vgscan
/vgchange
, etc!Merci à Cristian Ciupitu sur Unix et Linux , bien qu'il ait fallu un peu plus de fouilles pour trouver le plugin et tout faire fonctionner ensemble.
la source
nbdkit -v --no-fork -i 127.0.0.1 --filter=xz file ~/Downloads/50m.xz
fonctionnait très bien avec la même commande clientnbdkit 1.1.11
utilise l'ancien protocole NBD, qui diffère du nouveau protocole NBD, utilisé dansnbd-client 3.13
, mais vous pouvez utiliser la version nbd-client avant 3.10, par exemplenbd-client 3.8 from Ubuntu precise 12.04 old LTS
[utiliser les anciennes versions uniquement localement pour la sécurité!]Voici ma façon de le faire, mais je ne connais pas l'équivalent de la console,
.iso
fichier avecDisk Image Mounter
.la source
dd if=/dev/zero
et file-roller) et il ajoute en fait 362k de données (surcharge iso je suppose). Merci cependant, l'idée est sur la bonne voie