Déplacement du contenu d'une partition

(Écrit en orthographe recommandée. Voir note en bas de page)


Vous voulez déplacer le contenu d'une partition vers une autre partition ou déplacer le contenu d'un répertoire vers une autre partition. Par exemple, la partition /usr est pleine à ras-bord et vous venez d'installer un autre disque dur, ou sur le même disque dur, vous avez une partition plus grosse.
Autre exemple, la partition / déborde et vous avec un très gros répertoire /home. Vous allez donc le déplacer (ou plutôt son contenu) vers une autre partition de taille suffisante sur le même (ou sur un autre) disque dur, peu importe.
Dernier exemple, vous voulez déplacer la partition racine /

1er cas : Votre répertoire /home est suffisamment gros pour que vous vouliez lui attribuer une partition pour lui tout seul. Cette partition est, mettons, /dev/hdb6. Il vous faudra, pour pouvoir y écrire, la monter sur un répertoire. Pas sur /home bien entendu, car sinon son contenu devient inaccessible, ce qui est gênant ;-). Appelons-le par exemple /mnt/
hdb6. Pour le créer, la commande (sous root) suivante fera bien l'affaire:
mkdir /mnt/
hdb6, puis montons-y la partition visée, c'est à dire /dev/hdb6 en faisant:
mount /dev/hdb6 /mnt/
hdb6

C'est fait. Maintenant il ne reste plus qu'à copier (PAS déplacer) les données avec.... plusieurs commandes au choix. J'en ai essayé quelques-unes qu'on m'a suggérées. Personnellement, j'ai préféré la plus simple, et la plus rapide: cp -a (j'insiste pour le -a). Il y a d'autres possibilités avec tar et cat. J'en parlerai peut-être plus tard si j'ai le temps de rallonger ce howto.
Mais AVANT, il faut que ce répertoire que vous allez copier soit inactif. (vous vous voyez démonter un moteur en marche ?). Comme c'est le répertoire /home, il ne faut plus d'utilisateur logué, à part root (qui a son répertoire personnel ailleurs). Ensuite, vous allez vous connecter en mode Single avec la commande (variable suivant les distributions -ralala !). Sur Mdk 8.2, c'est init 1. Vous pouvez le vérifiez en lisant le fichier /etc/inittab. Vous y trouverez une ligne qui ressemble à ça :
#   1 - Single user mode
Le 1 m'indique donc qu'il faut faire init 1 (parfois ce peut être init S)
N.B. Si je voulais déplacer une partition indispensable à root, par exemple /root ou toute la partition racine, là pas de quartier : il faudrait rebouter sur un système de secours (disquette, CD style Demolinux ou Knoppix, autre disque dur,...).

Bref: cp -a /home/.  /mnt/
hdb6
Explications :
cp pour copier
-a pour "all" qui va copier en préservant les droits, les fichiers spéciaux et compagnie. Si vous vous contenter de faire ça avec konqueror ou mc, vous aurez des problèmes.
/home/. veut dire le contenu de /home/  (là aussi, je radote, mais j'insiste pour le . On pourrait mettre une *, mais ça ne copierait pas les fichiers cachés de premier niveau dans le répertoire ) et /mnt/
hdb6/    vous l'avez compris, c'est le répertoire cible.

Maintenant que vos données sont copiées, vous allez vérifier que ça marche. Renommez (ne le supprimez PAS encore) le répertoire /home en /home_ancien (après l'avoir démonté). Puis, vous allez créer un répertoire /home (eh oui, il n'existe plus puisque vous l'avez renommé). Ensuite, vous allez démonter la partition /dev/hdb6 avec /umount /dev/hdb6 ou umount /mnt/
hdb6 pour la remonter sur /home avec :
mount /dev/hdb6 /home
. Et le tour est joué ! Enfin presque....
Maintenant, il faut vérifier que tout fonctionne bien. Quittez le mode single avec init 3 ou 5, ça dépend si vous voulez vous mettre en mode graphique. Là aussi, la lecture du fichier /etc/inittab apporte beaucoup d'aide :
#   5 - X11

veut dire qu'il faut taper init 5 pour être en mode graphique. Ah, et vous ne vous rappelez plus en quoi vous êtiez avant de commencer cette manip ? Regardez un peu plus bas :
id:5:initdefault:

Le niveau d'exécution (runlevel) par défaut est 5. Donc tapez init 5 (chez vous, ça peut être différent)
Ouf ! (j'espère en tout cas): ça redémarre en mode graphique (ici en tout cas) et vous pouvez demander à vos utilisateurs de se loguer et de vérifier si tout va bien. Si c'est le cas, c'est presque fini. Il reste un fichier à retoucher: /etc/fstab/ En effet, au prochain démarrage, le système va lire ce fichier pour savoir quoi et où monter. Et comme il ne sait pas qu'il faut monter la partition /dev/hdb6 sur /home, eh bien vous allez vous trouver avec un répertoire /home.... vide. Et les users auront du mal à se loguer :-)

Il vous faut donc éditer avec un éditeur de texte: vi, emacs, gedit, kate,... celui que vous voulez, mais PAS avec un traitement de texte (Staroffice, Openoffice, lyx, kword,....)
et vous allez rajouter une ligne comme ça :

#Montage de la partition /home
/dev/hdb6  /home ext3 user,exec

Explications : la première ligne est un commentaire (à cause du #), c'est-à-dire qu'elle n'est pas prise en compte (vous pouvez y marquer ce vous voulez (restez poli quand même, hein.) C'est intéressant d'y indiquer ce à quoi sert les lignes en dessous.
La deuxième demande au système de monter /dev/hdb6 sur /home (la commande mount est sous-entendu). Si votre système de fichier n'est pas ext3, vous adapterez.
Vous sauvez et vous vérifierez si ça marche bien au prochain reboot.
Ça marche ? Très bien, il ne vous reste plus qu'à supprimer l'ANCIEN répertoire /home (pas le nouveau, hein.) Rappelez-vous, on l'avait appelé /home_ancien. Avec rm -rf /home_ancien, c'est très efficace. Avec un explorateur en mode graphique (konqueror, gmc,...) aussi (pensez à vider la corbeille). Mais tout de même, si vous pouvez, attendez quelques temps avant de la faire, on ne sait jamais (ou alors faites une sauvegarde). Par contre, vous pouvez éliminez sans remord le répertoire /mnt/home_temporaire/ : normalement, il est vide (vérifiez-le quand même).

2ème cas : la procédure est assez similaire. J'ai mis en gras les parties différentes du 1er cas.


La partition /home est bien trop pleine. Cette partition est, mettons, /dev/ha3. Et comme vous avez cassé votre tirelire pour acheter un deuxième disque dur, vous disposez d'une volumineuse partition /dev/hdb6. Il vous faudra, pour pouvoir y écrire, la monter sur un répertoire. Pas sur /home bien entendu, car sinon son contenu devient inaccessible, ce qui est gênant ;-). Appelons-le par exemple /mnt/hdb6. Pour le créer, la commande (sous root) suivante fera bien l'affaire:
mkdir /mnt/
hdb6, puis montons-y la partition visée, c'est à dire /dev/hdb6 en faisant :
mount /dev/hdb6 /mnt/
hdb6
C'est fait. Maintenant il ne reste plus qu'à copier (PAS déplacer) les données avec... plusieurs commandes au choix. J'en ai essayé quelques-unes qu'on m'a suggérées. Personnellement, j'ai préféré la plus simple, et la plus rapide : cp -a (j'insiste pour le -a). Il y a d'autres possiblités avec tar et cat. J'en parlerai peut-être plus tard si j'ai le temps de rallonger ce howto.
Mais AVANT, il faut que ce répertoire que vous allez copier soit inactif. (vous vous voyez démonter un moteur en marche ? ). Comme c'est le répertoire /home, il ne faut plus d'utilisateur logué, à part root. Ensuite, vous allez vous connecter en mode Single avec la commande (variable suivant les distributions -ralala!). Sur Mdk 8.2, c'est init 1. Vous pouvez le vérifiez en lisant le fichier /etc/inittab. Vous y trouverez une ligne qui ressemble à ça:
#   1 - Single user mode
Le 1 m'indique donc qu'il faut faire init 1 (parfois ce peut être init S)
N.B. Si je voulais déplacer une partition indispensable à root, par exemple /root ou toute la partition racine, là pas de quartier: il faudrait rebouter sur un système de secours(disquette, CD, autre disque dur,...).

Bref: cp -a /home/.  /mnt/
hdb6
Explications: cp pour copier, -a pour all qui va copier en préservant les droits, les fichiers spéciaux et compagnie. Si vous vous contenter de faire ça avec konqueror ou mc, vous aurez des problèmes.  /home/. veut dire le contenu de /home/  (là aussi, je radote, mais j'insiste pour le . On pourrait mettre une *, mais ça ne copierait pas les fichiers cachés de premier niveau dans le répertoire) et /mnt/
hdb6 vous l'avez compris, c'est le répertoire cible.

Maintenant que vos données sont copiées, vous allez vérifier que ça marche. Renommez (ne le supprimez PAS encore) le répertoire /home en /home_ancien (après l'avoir démonté). Puis, vous allez créer un répertoire /home (eh oui, il n'existe plus puisque vous l'avez renommé). Ensuite, vous allez démonter la partition /dev/hdb6 avec /umount /dev/hdb6 ou umount /mnt/hdb6 pour la remonter sur /home avec :
mount /dev/hdb6 /home. Et le tour est joué ! Enfin presque...

Maintenant, il faut vérifier que tout fonctionne bien. Quittez le mode single avec init 3 ou 5, ça dépend si vous voulez vous mettre en mode graphique. Là aussi, la lecture du fichier /etc/inittab apporte beaucoup d'aide :
#   5 - X11

veut dire qu'il faut taper init 5 pour être en mode graphique. Ah, et vous ne vous rappelez plus en quoi vous êtiez avant de commencer cette manip ? Regardez un peu plus bas :
id:5:initdefault:

Le niveau d'exécution (runlevel) par défaut est 5. Donc tapez init 5 (chez vous, ça peut être différent)
Ouf ! (j'espère en tout cas) : ça redémarre en mode graphique (ici en tout cas) et vous pouvez demander à vos utilisateurs de se loguer et de vérifier si tout va bien. Si c'est le cas, c'est presque fini. Il reste un fichier à retoucher: /etc/fstab/ En effet, au prochain démarrage, le système va lire ce fichier pour savoir quoi et où monter. Et comme il ne sait pas qu'il faut monter la partition /dev/hdb6 sur /home, eh bien , il va monter la partition /dev/hda3 sur /home, au lieu d'y monter la partition /dev/hdb6.

Il vous faut donc éditer avec un éditeur de texte: vi, emacs, gedit, kate,... celui que vous voulez, mais PAS avec un traitement de texte (Staroffice, Openoffice, lyx, kword,....)
et vous allez modifier une ligne comme ça : (il vous faudra adapter)
/dev/hda3  /home ext3 user,exec

en mettant quelque chose comme ça (là aussi il vous faudra adapter)

 #Montage de la partition /home
/dev/hdb6  /home ext3 user,exec


Explications : la première ligne, celle que vous avez modifiée demandait au système de monter /dev/hda3 sur /home. Ce n'est évidemment plus ce que vous voulez.
la deuxième  ligne est un comm
entaire (à cause du #), c'est à dire qu'elle n'est pas prise en compte (vous pouvez y marquer ce vous voulez (restez poli quand même, hein.) C'est intéressant d'y indiquer ce à quoi sert les lignes en dessous.
La deuxième demande au système de monter /dev/hdb6 sur /home (la commande mount est sous-entendu). Si votre système de fichier n'est pas ext3, vous adapterez.
Vous sauvez et vous vérifierez si ça marche bien au prochain reboot.
Ça marche ? Très bien, il ne vous reste plus qu'à supprimer l'ANCIEN répertoire /home (pas le nouveau, hein.) Rappelez-vous, on l'avait appelé /home_ancien. Le problème, c'est qu'il apparaitra vide : c'est normal, car les données sont dans la partiton /dev/hda3, et celle-ci n'est pas montée automatiquement puisqu'elle n'est pas dans le /etc/fstab. Vous ferez un petit mount /dev/hda3 /home_ancien,  puis vousle viderez avec rm -rf /home_ancien/* ou en utilisant un explorateur en mode graphique (konqueror, gmc,...) aussi (pensez à vider la corbeille). Ensuite, vous démontez le tout avec /umount /dev/hda3 et vous terminerez en supprimant le répertoire avec rmdir /home_ancien/

Mais tout de même, si vous pouvez, attendez quelques temps avant de la faire, on ne sait jamais (ou alors faites une sauvegarde). Par contre, vous pouvez éliminez sans remord le répertoire /mnt/
hdb6 : normalement, il est vide (vérifiez-le quand même).

3ème cas : Vous voulez déplacer la partition racine /
Le travail est le même qu'avec la partition  /home, sauf qu'il faudra utiliser un système de secours (et non plus un simple mode Single), et donc rebouter. Le fichier /etc/fstab devra être modifié dans la ligne qui concerne la partition racine en remplaçant le /hda3 par hdb6 :
#Montage de la partition racine
/dev/hdb2 / ext3 defaults 1 1
Vous devrez retoucher e fichier /etc/lilo.conf et lancer la commande lilo (ou /sbin/lilo) pour réinstaller lilo.

Si vous utilisez grub, il faudra modifier le fichier /boot/grub/menu.lst Il se peut qu'il faille aussi réinstaller grub (s'il se trouve sur une partition déplacée) : prévoyez une disquette grub qui fonctionne.



Cet article est soumis à la licence LGPL. Vous pouvez le copier et le diffuser comme bon vous semble à condition de ne pas l'altérer et de laisser intacte la présente notice. Il a été écrit avec l'aide de plusieurs membres de la communauté du logiciel libre que je remercie au passage.


Des erreurs, des suggestions ? écrivez-moi.  Voir mon adresse ici http://astuce.linux.free.fr/index.html


Mise à jour le 10 octobre 2005 Claude MICOUIN



logo orthographe recommandée


N.B. L'Académie française a approuvé à l'unanimité un certain nombre de rectifications.
Ces rectifications sont désormais inscrites dans les programmes du ministère français de l'éducation nationale (BO n°5 du 12 avril 2007).
Pour en savoir plus http://www.orthographe-recommandee.info/

Attention ! Ces rectifications ne sont PAS de simples tolérances, mais fixent la NOUVELLE orthographe de certains mots.