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