Ce tutoriel est ancien et les méthodes qu'il propose sont complexes, fastidieuses et ne font pas consensus.
La manière simple et généralement conseillée pour déplacer ses données personnelles et simplement de les déplacer - seul le contenu concerné, sans son répertoire parent /home/$USER
- puis d'informer le système de leur nouvel emplacement en mettant à jour les variables xdg-user-dirs.
Déplacer le dossier /home/$USER est fastidieux et dangereux. Si votre situation le permet, vous devriez d'abord envisager de choisir sa localisation au moment de l'installation. Cette manipulation est simplissime : Installer ubuntu manuellement (choisir "faire autre chose" lors de l'installation). Puis, en plus de choisir la taille et l'emplacement du "SWAP" et de la racine "/", indiquer la partition que vous souhaitez utiliser pour le HOME en lui donnant l'étiquette "/HOME"…
Si votre situation nécessite un déplacement du $HOME sans réinstaller ubuntu, les modifications présentées ici ne sont pas triviales. Elles nécessitent un minimum de soin. Afin d'éviter tout problème, faites une sauvegarde du répertoire /home/ (préférablement sur un support externe, comme une partition linux1) d'un disque dur externe ou d'une clé USB ou un DVD-R par exemple) avant toute manipulation. En cas d'erreur, il est possible que vous perdiez l'intégralité de vos fichiers importants et de votre configuration actuelle . Il est donc important d'en conserver une copie accessible à tout moment.
Si vous avez effectué une installation par défaut, votre répertoire /home se trouve sur la même partition que la racine /. Mais cette situation, qui a des avantages et des inconvénients, peut être modifiée.
Le dossier /home contient :
Les avantages d'un /home séparé sont :
Note : Il n'est pas indispensable d'avoir un /home séparé pour réinstaller Ubuntu sans perdre son /home. (plus d'informations).
Si le /home séparé vous semble bien adapté à vos besoins (en cas de doute, posez votre question sur ce forum), les 2 démarches ci-dessous vous permettent d'effectuer cette opération, soit avec le terminal, soit en mode (presque) graphique.
Pas de partition contenant des données personnelles et du logiciel accessibles par le point de montage /home mais une partition contenant seulement les données personnelles accessibles par le point de montage /media/Data consulter le principe.
sudo cp -av /home/. /media/(nom d'utilisateur)/newhome/
ce qui copie le contenu de /home (mais pas le /home lui même) sur la nouvelle partition.
/home
déjà sur une partition séparée, Suivez les points 1 à 3. Ensuite il vous suffit de modifier le fichier /etc/fstab (faites une copie de ce fichier avant modification) avec les droits administrateurs afin de pointer vers le nouveau /home ##liste les partitions et leur UUID##
sudo blkid
##Sauvegarde du fichier /etc/fstab##
sudo cp -a /etc/fstab /etc/fstab.save
##Modifiez le fichier /etc/fstab##
gedit admin:///etc/fstab
Cherchez la ligne pointant vers l'ancien home et remplacez l'UUID par celui de la partition du nouveau /home. Profitez-en pour changer dans les commentaires le /dev/sdXy par le nouveau (vous pouvez le trouver avec l'utilitaire de disque en cliquant sur la partition voulue) comme dans l'exemple ci-dessous :
#Entry for /dev/sdc1 : UUID=905ce836-7aa9-4413-853f-126a0eb2587c /home ext4 defaults 0 2
Fermez et enregistrez le fichier puis redémarrer votre ordinateur
gparted
udisksctl mount -b /dev/disk/by-label/newhome
sudo cp -avu /home/. /media/$USER/newhome/
sudo ls -1 -Rals /home | wc -l ; sudo ls -1 -Rals /media/$USER/newhome | wc -l
ls -als /media/$USER/newhome/$USER
UUID=$(sudo blkid | grep newhome| grep -oP ' UUID=\K.*(?=BLOCK)' | cut -d'"' -f2)
echo $UUID
echo $UUID | cut -d'"' -f2) /home ext4 defaults 0 2 | sudo tee -a /etc/fstab
sudo mv -v /home /oldhome
df -htext4
sudo rm -Rv /oldhome
df -htext4
#Entry for /dev/sda3 : UUID=acda7b4a-xxxxx /home ext4 defaults 0 0
Et votre système redémarrera avec l'ancienne configuration et les anciens fichiers se trouvant sur le /home séparé. D'éventuels thèmes ou logiciels précédemment installés devront par contre l'être à nouveau, mais une fois ceci fait, ils démarreront avec la configuration qu'ils avaient antérieurement, car ils la retrouveront sur le /home séparé.
Cette méthode est rapide et simple à exécuter. Elle repose sur l'utilisation de Disk-Manager.
Pour connaitre le nom de votre partition, lorsque vous aurez redémarré en recovery mode saisissez :
fdisk -l
sudo telinit 1
».Ce mode particulier vous donne les droits administrateurs et permet de travailler sans avoir besoin de /home.
Démarrez en « mode recovery ». Une solution alternative simple : fermez toutes vos fenêtres, puis dans un terminal, exécutez la commande « sudo telinit 1
».
telinit 1 fait passer le systeme en runlevel 1, sur un serveur distant vous perdrez donc votre connexion SSH, necessitant un reboot materiel, ou le changement d'utilisateur. En recovery mode, la partition "/" est monté en read-only. Pour la monter en read-write, il faut utiliser :
mount -o rw,remount /
Le but est de copier tout ce que vous avez dans /home, dans la nouvelle partition. Pour cela, il faut d'abord "monter" la partition en question :
mkdir /nouveau-home mount /dev/sda3 /nouveau-home/
Vérifiez que la partition soit bien montée, la commande suivante doit vous afficher « /dev/sda3 » sur « /nouveau-home » :
df -h
Il ne reste plus qu'à lancer la copie du contenu du /home (mais pas du /home lui-même - attention à la syntaxe, c'est le point "." qui copie le contenu) :
cp -a /home/. /nouveau-home/
À la fin de la copie, lancez de nouveau la commande :
df -h
L'espace disponible a dû diminuer. Vous pouvez également vérifier que tout a bien été copié, avec une commande du type :
ls -al /nouveau-home/votre_login/
Il faut maintenant indiquer à l'ordinateur qu'à chaque démarrage il faut monter sda3 sur le répertoire /home. Pour cela, nous allons devoir éditer le fichier /etc/fstab. Mais avant nous allons devoir connaitre l'UUID de sda3. Pour cela si vous avez une version antérieure à Karmic Koala:
vol_id /dev/sda3
ou à partir de Karmic Koala :
blkid /dev/sda3
Prenez un papier et un crayon, et notez soigneusement l'uuid que vous renvoie cette commande ou ajoutez automatiquement l'uuid à la fin de /etc/fstab :
blkid /dev/sda3 >> /etc/fstab
Ensuite, éditez le fichier /etc/fstab :
nano /etc/fstab
Et ajoutez/modifier une/cette ligne comme ceci :
UUID=a9504f40-83cd-4260-bbf4-646aa304e699 /home ext3 defaults 0 2
Remplacez bien sûr l'UUID donnée ici en exemple par le votre. De plus, modifiez ext3 par autre chose si votre nouvelle partition n'a pas été formatée en ext3…
Ici, deux cas peuvent se présenter :
mv /home /home.bak mkdir /home
#
) au début de la ligne, puis enregistrez et quittez.Vous pouvez maintenant faire un essai en redémarrant l'ordinateur :
reboot
Tout s'est bien passé, reste à faire un peu de ménage en supprimant les fichiers contenus dans l'ancien /home, puisqu'ils ont tous été copiés sur sda3.
sudo rm -rf /home.bak
Avant propos
On va transférer le /home qui fonctionne, installé dans la même partition que le logiciel, dans une autre partition EXT4.
Prérequis
Une partition formatée en EXT4 probablement stockée dans un autre disque contenant éventuellement déjà des données voir un ancien logiciel qui deviendra le futur /home. On l'appelle Home0. On aura besoin de connaître son nom.
Une installation fonctionnant avec la racine / contenant /home.
But
Le but est alors de virer home et d'utiliser Home0 à la place.
Méthode
Définir la partition Home0 comme point de montage du futur home dans le fichier fstab.
Monter la partition
Pour chaque utilisateur, transférer les données de home dans Home0 lorsqu'elles sont absentes sinon dans $USER/Home1 afin que le choix puisse se faire en conscience. Souvent, il n'y a qu'un utilisateur de défini.
Rebooter.
Réalisation
Cette recherche peut se faire en lançant l'une de ces commandes "lsblk" ou "sudo fdisk -l". La partition doit être au format ext4. Elle est de grande taille. Normalement elle n'est pas stockée dans le même disque que le logiciel. Son nom est semblable à SDB1 ou NVME0P1. Cette valeur est destinée à remplacer XXXX dans les deux commandes suivantes.
echo UUID=$(sudo blkid | grep /dev/XXXX | grep -o ' UUID.*BLOCK' | cut -d'"' -f2) /home ext4 defaults 0 2 | sudo tee -a /etc/fstab
sudo mkdir -v /mnt/Home0 sudo mount -v /dev/XXXX /mnt/Home0
sudo mkdir -v /mnt/Home0/$USER sudo chown $USER:$USER /mnt/Home0/$USER
mv -nv $HOME/* /mnt/Home0/$USER
mv -nv $HOME/.[0-9a-zA-Z]* /mnt/Home0/$USER
mv -v -b --suffix=.OLD $HOME/.config/* /mnt/Home0/$USER/.config rmdir -v .config
mkdir -v /mnt/Home0/$USER/Home1 mv -v $HOME/* /mnt/Home0/$USER/Home1
mv -v $HOME/.[0-9a-zA-Z]* /mnt/Home0/$USER/Home1
ls -Rals cd / sudo rm -rv $HOME
Cela libérera physiquement l'espace disque encore utilisé par les applications en cours et permettra d'utiliser la nouvelle partition.
On va réutiliser un /home qui fonctionne avec une nouvelle installation du système d'exploitation.
On supposera que l'on reste sur le même système d'exploitation - y compris la version, par exemple 16.04.2 - et que celui-ci est à jour pour augmenter la compatibilité, mais selon les cas c'est ou ce n'est pas nécessaire.
Une partition UUID=452584560-4521-12ae-b1d7-32fd221fd2125c contient un /home qui deviendra le futur /home: on l'appelle home0;
Une installation a été faite d'un système propre; en particulier cette partition contient la racine / qui contient /home: on l'appelle home1.
Le but est alors de virer home1 qui ne contient rien d'intéressant et d'utiliser home0 à la place.
Démarrer en root.
Détruire /home ( éventuellement le renommer avec mv /home /home1 ).
Rajouter une ligne dans /etc/fstab du type:
UUID=452584560-4521-12ae-b1d7-32fd221fd2125c /home ext4 defaults 0 2
Faire prendre en compte par le système cette nouvelle configuration avec mount -a.
ls /home/ devrait alors vous montrer le contenu de la partition home0.
Le logiciel est composé de tous les répertoires commençant par un point ainsi que le répertoire snap. La procédure ci-dessous va dupliquer ces fichiers, créer les liens symboliques, démonter le home, y mettre ces fichiers et rebooter. Il restera à supprimer ces fichiers ultérieurement.
sudo -i ### Passer en mode administratif
for Me in $(ls -1 /home) ; do ###On va dire que l'O.S. de base n'a pas à modifier le référentiel même lorsque la partition Data est en incident!. cp -nv /etc/xdg/user-dirs.conf /home/$Me/.config && sed -i 's/True/False/' /home/$Me/.config/user-dirs.conf mkdir -pv /Newhome/$Me ## Créer un home futur. echo le transfert de $Me rsync -ax --stats /home/$Me/{.[^.]*,snap} /Newhome/$Me ln -s /media/Data/$Me/Bureau /Newhome/$Me/Bureau ln -s /media/Data/$Me/Documents /Newhome/$Me/Documents ln -s /media/Data/$Me/Images /Newhome/$Me/Images ln -s /media/Data/$Me/Musique /Newhome/$Me/Musique ln -s /media/Data/$Me/Téléchargements /Newhome/$Me/Téléchargements ln -s /media/Data/$Me/Vidéos /Newhome/$Me/Vidéos chown -R $Me:$Me /Newhome/$Me; done ### Déplacer le logiciel sed -i 's/\/home/\/media\/Data/' /etc/fstab ### Mettre à jour le fichier /etc/fstab. mkdir -v /media/Data # et créer son point de montage. umount -l /home ## démonter la partition /home en cours d'utilisation. mv -v /Newhome/* /home ## Mettre en place le nouveau home. reboot ## Rebooter.
sudo -i # Devenir administrateur
for Me in $(ls -1 /home) ; do mkdir -pv /Newhome/$Me ## Créer un home futur. echo le transfert de $Me ; sleep 5 ### Afin d'avoir le temps de lire. cp -Rauv /home/$Me/* /Newhome/$Me #### Copier les fichiers utilisateur. cp -Rauv /home/$Me/.[0-9a-zA-Z]* /Newhome/$Me ### Copier les fichiers techniques. chown -R $Me:$Me /Newhome/$Me ### L'utilisateur redevient propriétaire de ses données. done
sed -i '/\home/ s/^/# /' /etc/fstab ### commenter la ligne montant le home dans le fichier /etc/fstab umount -l /home ## Démonter la partition /home en cours d'utilisation. mv -v /Newhome/* /home ## Mettre en place le nouveau home par substitution de répertoire. reboot #Rebooter pour prise en charge de la modification.