Existe-t-il un moyen de prendre un fichier img de disque qui est divisé en plusieurs parties et de le monter en tant que périphérique à boucle unique?
Existe-t-il un moyen de prendre un fichier img de disque qui est divisé en plusieurs parties et de le monter en tant que périphérique à boucle unique?
Réponses:
Je ne pense pas que vous puissiez le faire sur place, mais si vous avez suffisamment d'espace, cela devrait fonctionner:
# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k
# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01
# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>
# Mount the new filesystem
mount /dev/md0 /mnt
Vous ne pouvez pas simplement créer une matrice RAID à partir des fichiers d'origine, car les disques RAID ont un en-tête spécifique où le nombre de disques, le niveau RAID, etc. est stocké. Si vous le faites, cette partie de vos fichiers d'origine sera écrasée.
Vous pouvez utiliser le mdadm --build
pour créer un tableau sans métadonnées, mais vous devez d'abord effectuer une sauvegarde. Ou si le montage en lecture seule est suffisant:
losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt
Pourquoi veux-tu faire cela? Si votre système de fichiers ne peut pas gérer> 4 Go de fichiers, vous devez simplement passer à un autre sain.
truncate
au lieu de dd
car il est beaucoup plus rapide (il n'effectue pas d'écriture réelle sur FS mais alloue simplement les inodes et marque le fichier comme contenant simplement un trou).
Pour monter une image disque divisée (ou une image de partition), vous devez utiliser à affuse
partir des outils afftools actuellement gérés ici: https://github.com/sshock/AFFLIBv3
Donc, si vous avez un fichier, divisé en plusieurs sous-fichiers test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009
alors vous pouvez les rejoindre virtuellement avec affuse
# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw
(cela combine tous les fichiers en commençant par le fichier 000, puis 001, 002,…)
Et puis montez l'image
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
L'utilisation est décrite ici et quelques exemples ici . Une page de manuel est également disponible après la compilation et l'installation, ou ici .
PS: Pour moi, cela affuse
ne fonctionnait que si les fichiers divisés avaient une taille qui était un multiple de 512 octets.
Vous pouvez écrire votre propre extension de périphérique de stockage en bloc (pensez à une extension de type fusible) et effectuer des recherches en fonction de l'adresse.
Ici vous pouvez trouver un exemple d'utilisation du fusible https://github.com/libfuse/python-fuse/blob/master/example/hello.py
La chose la plus proche que je connaisse jusqu'à présent pour une solution est de créer une VM VMware. Vous démarrez un CD live Linux comme Rescatux ou Knoppix, vous créez un dossier partagé SMB sur votre ordinateur hôte, vous montez ce partage SMB sur votre VM, puis vous dd
l'image sur le HD virtuel. VMware enregistre par défaut ses images de disque sous forme de fichiers fractionnés, c'est donc la chose la plus proche de lire directement une image disque divisée en plusieurs fichiers.
Plus tard, si vous souhaitez accéder aux fichiers depuis votre ordinateur hôte, vous pouvez essayer d'ajouter un deuxième disque dur virtuel à l'image et y copier les fichiers. Ensuite, vous configurez un dossier partagé SMB sur la machine virtuelle et vous y connectez depuis votre hôte. De cette façon, vous pouvez, par exemple, violer la limite de 4 Go de fichiers FAT32 dans le cas où vous utilisez un iPod Classic (qui ne groks fat32), ou la carte SD de votre smartphone (généralement vous devez installer une ROM personnalisée pour pour utiliser Ext3 ou NTFS sur le stockage externe, vous avez besoin pour cela d'un téléphone d'un fabricant populaire comme Samsung ou Motorola, donc si vous avez un smartphone chinois, vous êtes perplexe).
Ce n'est certes pas une solution efficace, mais comme je suis limité par le fait de ne pas pouvoir utiliser d'autre FS que fat32 sur mon iPod Classic ou mes smartphones Samsung avec une ROM stock, j'ai parcouru à peu près tout Internet dans le passé et je ne suis toujours pas en mesure de trouver une solution efficace à ce problème. Je vais peut-être même devoir l'écrire moi-même.
PS: J'ai oublié de mentionner que si vous êtes sous Windows, cela pourrait être le seul moyen de le faire.
Sous BSD, vous pouvez utiliser l'option union pour monter. Sous Linux, vous pouvez essayer l'unionFS.