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").