7. Copiez les fichiers de l'ancien disque au nouveau

Contenu de cette section

Il faut reproduire complètement la structure du disque, liens inclus.

Toutefois, il ne faut pas copier le répertoire /new-disk, puisque ça reviendrait à recopier le nouveau disque sur lui-même !

De plus, il faut copier le répertoire /proc sur le nouveau disque, mais pas son contenu : "/proc" est un système de fichiers "virtuel" qui ne contient pas de vrais fichiers, mais plutôt des informations sur les processus qui tournent sur le système.

Voici quatre façons de copier un vieux disque sur un nouveau. Ça peut prendre du temps, d'autant plus que le disque est gros ou la mémoire peu importante. Vous pouvez vous attendre à copier 10Mo par minute, ou même plus.

Vous pouvez suivre la progression de la copie en utilisant la commande "df" depuis un autre terminal. Si vous êtes aussi bon public que moi, essayez "watch df" ou "watch ls -l /new-disk" pour voir un rapport mis à jour toutes les deux secondes ; utilisez Ctrl-C pour arrêter l'affichage. Soyez conscient que la commande "watch" va ralentir la copie.


1.      cp -ax / /new-disk

Ceci est la méthode la plus simple, mais ne fonctionnera que si votre système Linux est sur une seule partition. L'option -a préserve autant que faire se peut le système original. L'option -x restreint cp à un seul système de fichiers. Ceci est nécessaire pour éviter de copier les répertoires /proc et /new-disk.


2.  cd / && cp -a `/bin/ls -1A | egrep -v "^new-disk$|^proc$"` /newdisk

Ceci va à la racine puis copie tous les fichiers et répertoires sauf /proc et /new-disk. Notez que la première option après ls est le chiffre "1", et non la lettre "L" !

Cette commande devrait fonctionner en toutes circonstances.


3.       (cd / && tar cpf - . --exclude new-disk --exclude proc) | (cd
         /new-disk && tar xpf -)

(Ecrire cette commande sur une seule ligne)

Ceci va dans le répertoire racine, "archive" tout sauf /proc et /new-disk, va dans /new-disk et "désarchive" tout là. Notez qu'il ne doit pas y avoir de slash ("/") avant ou après les noms de répertoire dans les options --exclude.

(Note : L'option -l ne marche pas ici, puisque tar recréerait les répertoires /proc et /new-disk même s'il ne copie pas leurs contenus. C'est pourquoi l'option -l de tar n'a pas le même comportement que l'option -x de cp.)

Cette méthode est quelque peu plus lente que les autres.


4.      cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin
        /tmp /usr /var /new-disk

(Ecrire la commande sur une seule ligne)

Le dernier répertoire, /new-disk, est la destination pour la commande cp. Tous les autres répertoires sont les sources. C'est pourquoi je copie tous les répertoires listés dans /new-disk.

Avec cette méthode, vous faites simplement une liste des répertoires que vous voulez copier. Ici j'ai indiqué tous mes répertoires à l'exception de /proc et /new-disk. Si vous ne pouvez utiliser aucune des méthodes pour une raison quelconque, vous pouvez toujours utiliser cette commande pour spécifier manuellement les répertoires que vous voulez copier.

Avec cette méthode seulement, s'il y a des fichiers dans le répertoire racine lui-même, vous avez besoin d'une autre commande pour les copier. En particulier, ceci est requis avec les Debian et Slackware, car ces distributions placent des fichiers dans le répertoire racine :

         cp -dp /* /.* /new-disk

Après avoir utilisé une méthode parmi les quatre, vous devez aussi créer le répertoire /proc sur le nouveau disque :

        mkdir /new-disk/proc

A ce point, vous pouvez, si vous le voulez, vérifier la structure des fichiers sur le nouveau disque :

        umount /new-disk
        fsck.ext2 -f /dev/hdb1
        mount -t ext2 /dev/hdb1 /new-disk

Vous pouvez aussi utiliser le script suivant pour comparer les deux disques, et vous assurer que les fichiers ont été copiés correctement.

#!/bin/sh
cd /
for file in `/bin/ls -1A | egrep -v '^new-disk$|^proc$'`
do
    find $file -xtype f -exec cmp \{\} /new-disk/\{\} \;
done

(Spécificité Slackware : une installation de base n'inclut pas les commandes "cmp" et "diff", alors vous ne pourrez pas lancer ces scripts si vous avez seulement installé les fichiers de base.)

Ceci compare seulement les fichiers normaux, et non les fichiers spéciaux associés à des périphériques (dans le répertoire /dev, les sockets, etc., car la commande cmp ne fonctionne pas correctement avec ceux-ci. Je - NdT l'auteur - serais intéressé par toute suggestion sur le moyen de vérifier ces fichiers "spéciaux").


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre