Table of Contents

Comment créer une image disque à partir d'un répertoire

Cet article examine plusieurs façons de créer une image disque à partir d'un répertoire.

Utilisation genisoimage et mkisof

Il existe de nombreux outils tels que genisoimage et mkisof à cet effet.

Pour installer genisoimage

Sous Ubuntu/Debian exécuter les commandes suivantes:

sudo apt-get update -y
sudo apt-get install -y genisoimage

Sous CentOS/Redhat/Fedora télécharger le paquet puis installer avec yum:

sudo yum installer wget -y
sudo wget http://mirror.centos.org/centos/7/os/x86_64/Packages/genisoimage-1.1.11-25.el7.x86_64.rpm
sudo yum install genisoimage-1.1.11-25.el7.x86_64.rpm -y

Une fois genisoimage installé, on peut créer une image ISO à partir du répertoire avec la commande suivante.

$ sudo genisoimage -o nom_fichier.iso /chemin/vers/répertoire

De même, on peut également utiliser la commande mkisofs pour créer une image ISO à partir du répertoire.

$ sudo mkisofs -o nom_fichier.iso /chemin/vers/répertoire

Utilisation de dd et losetup

Voici un ensemble de commandes pour créer un fichier image à partir du répertoire.

Créer un dossier pour l'image disque

$ sudo mkdir dossier_image
$ cd dossier_image

Créee un fichier image pour contenir le dossier. Nous allons créer un fichier image.ext3 de 750 mb.

dd if=/dev/zero of=image.ext3 bs=1024 count=768000

Depuis la version 2.6.31 du noyau Linux, l'appel système fallocate(2) est pris en charge pour les systèmes de fichiers Btrfs, ext4, OCFS2 et XFS permettant de réserver rapidement des blocs pour un fichier. C'est bien plus rapide que de créer un fichier en le remplissant de zéros.

fallocate -l [taille] "$iname.img"

Utiliser la commande losetup pour configurer le périphérique loop0 et l'attacher au fichier ci-dessus.

sudo losetup /dev/loop0 image.ext3

Formater ce périphérique loop0 en ext3

sudo mkfs.ext3 /dev/loop0

Le monter sur /mnt

sudo mount /dev/loop0 /mnt

Copier les fichiers du répertoire pour créer un fichier image. Par ex. /home/data:

cp -a /home/data/* /mnt

Démonter le device une fois les fichiers copiés.

sudo umount /mnt

Détacher le périphérique loop0.

sudo losetup -d /dev/loop0

Maintenant, l'image disque sera disponible sur image.ext3.

Archives cpio

La commande cpio permet également de faire des archives. Contrairement à la commande tar, elle n'est pas récursive. Tous les noms de fichiers entrant dans la composition de l'archive doivent être lus sur l'entrée standard. L'archive est envoyée sur la sortie standard. La commande est presque toujours utilisée derrière un pipe lui-même précédé de la commande find qui permet de générer les noms de fichiers souhaités.

Principales options :

Créer une archive cpio à partir d’un dossier find dossier | cpio -ov > filename.cpio
Créer une archive cpio à partir du répertoire courant find | cpio -ov > filename.cpio
Créer une archive cpio à partir d’une liste de fichiers/dossiers find fichiers/dossiers | cpio -ov > filename.cpio
Lister le contenu d’une archive cpio cpio -it < filename.cpio
Créer une archive cpio compressée au format gzip find dossier | cpio -ov | gzip > filename.cpio.gz
Equivaut à :
find dossier | cpio -ov | gzip -c > filename.cpio.gz
Créer une archive cpio compressée au format bzip2 find dossier | cpio -ov | bzip2 > filename.cpio.bz2
Equivaut à :
find dossier | cpio -ov | bzip2 -c > filename.cpio.bz2
Créer une archive cpio compressée au format xz find dossier | cpio -ov | xz > filename.cpio.xz -d < filename.cpio.xz | cpio -idv
Equivaut à :
xz -dc filename.cpio.xz | cpio -idv
Extraire un fichier particulier d’une archive cpio -idv fichier < filename.cpio
Préserver la date de modification lors de l’extraction d’une archive cpio cpio -idvm < filename.cpio

Par défaut, le mtime devient la date d’extraction. Avec l’option -m, le mtime des fichiers/dossiers de l’archive est préservé.
Créer une archive cpio à partir d’une sélection de fichiers find dossier -iname "extension" -print | cpio -ov > filename.cpio
Vérifier une archive cpio -it [-cv] < archive [fichiers_a_verifier ...]