Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/02/2026, à 18:28

geole

Extraire le logiciel du "home" dans une autre partition.

Bonjour
Suite à cette discussion
Voici une procédure permettant de
    1) Extraire la partie logicielle de tous les utilisateurs de la partition dédiée au  /home, dans une nouvelle partition devenant home au reboot
    2) Transformer  le vieux home  en partition de données pour tous les utilisateurs.
    3) Conservant le logiciel dans  la partition émettrice à titre de sécurité.

La préparation.
Il est nécessaire de fabriquer une partition destinée à recevoir le logiciel stocké chez les utilisateurs.  Soit le répertoire snap et les dossiers cachés.
Il est possible de connaître le total de leurs tailles actuelles en lançant cette commande.

     S0=$(sudo du --total  --summarize -BM /home/*/.* | tail -1 | awk '{print $1}')
       for d in /home/*/; do  
           S0=$((S0+$(sudo du --total  --summarize -BM "$d"snap | tail -1 | awk '{print $1}')))
       done
       echo Cette partition  doit être au minima de $S0 MegaOctets

     
Cette partition devra avoir un label UNIQUE  le plus parlant possible.  Ce label va permettre de la reconnaître.

  Le format de cette partition  est au  choix de l'utilisateur avec ce conseil
     Si la partition est dans un disque dur. le format à retenir est EXT4
     Si la partition est dans un SSD ou un NVME,  le format performant est F2FS.
         Voir quelques cas https://gist.github.com/hurryman2212/46 … cf2bec8c5e  https://en.wikipedia.org/wiki/F2FS

La méthode d'installation est la suivante.
Devenir le  chef

sudo -i   ## Devenir administrateur

Indiquer le point de montage de la future partition Data qui est actuellement montée sur /home

Pdm=/media/Data   ## Valeur conseillée.  Mais modifiable par exemple /media/DATA  ou /mnt/Donnees ou ...  (Eviter les espaces, les accents et les caractères spéciaux.).

Indiquer la valeur  de l'étiquette qui a été mise au formatage de la future partition HOME

Lbl=Home   ## Valeur exemple.  Doit être cette que vous avez utilisée  lors du formatage.  (Eviter les espaces, les accents et les caractères spéciaux.).

Monter la partition

Newhome=$(lsblk --noheadings  --output LABEL | grep $Lbl | wc -l) ##  Vérification  de l'unicité. 
if [ $Newhome    = 0 ]; then 
    echo "Aucune partition avec l'étiquette $Lbl n'a été détectée. Il est impossible de poursuivre. Arrêt immédiat."; sleep 60; exit
fi
if [ $Newhome    -gt 1 ]; then 
    echo "Trop de partitions avec l'étiquette $Lbl ont  été détectées. Il est impossible choisir. Arrêt immédiat."; sleep 60; exit
fi
if ! mountpoint -q /run/media/$Lbl; then
   mkdir -pv /run/media/$Lbl ## création du point de montage
   umount -v /dev/disk/by-label/$Lbl ## Au cas où il serait monté ailleurs
   mount -v /dev/disk/by-label/$Lbl /run/media/$Lbl  ## Montage de la partition.
   df -hxtmpfs  ## C'est le moment de vérifier si c'est correct avant de poursuivre.
fi
if ! mountpoint -q /run/media/$Lbl; then
   echo GROS PROBLEME  de montage. On ne peut pas poursuivre.; sleep 60; exit
fi

Dupliquer

for d in /home/*/; do  
    Me=${d/#\/home\/}; Me=${Me: : length -1} ## Récupération d'un nom d'utilisateur.
    echo  Duplication de $Me  ; sleep 5 ## Afin d'avoir le temps de lire.
#  Vérifier si utilisateur normal
    if [ -d "$d.config"  ]; then
       echo " $d est un vrai utilisateur."
       mkdir -pv /run/media/$Lbl/$Me ## Créer un $USER futur.
       cp --update=none -v /etc/xdg/user-dirs.conf /home/$Me/.config && sed -i 's/True/False/' /home/$Me/.config/user-dirs.conf  ## 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!.
       echo  Copie des fichiers techniques et du répertoire SNAP
       rsync -ax  --stats  /home/$Me/{.[^.]*,snap}  /run/media/$Lbl/$Me     
       ## Préparer les futurs liens symboliques pour ce qui n'a pas été  dupliqué
       for e in $d*; do
           Fic=${e##*/};  ## Récupération d'un nom de fichier
           if [ ! "$Fic"   = "." ];  then 
              if [ ! "$Fic"   = "snap" ];  then
                 echo ln -s /media/Data/$Me/"$Fic" /run/media/$Lbl/$Me/
                 ln -s /media/Data/$Me/"$Fic" /run/media/$Lbl/$Me/
              fi
           fi          
        done   
      chown -R $Me:$Me  /run/media/$Lbl/$Me ## L'utilisateur redevient propriétaire de ses données.
    else
       echo "$d n'est pas un vrai utilisateur."
       ln -s /media/Data/"$Me" /run/media/$Lbl/ ## protection pour les espaces
   fi
done

C'est maintenant le moment de faire la mise à jour du FSTAB

cp -v /etc/fstab /etc/fstab.old$(date +"-%Y-%m-%d-%H-%M-%S") ## Sauvegarder
sed -i  "s/\/home/$(echo $Pdm | sed 's/\//\\\//'g)/" /etc/fstab ; mkdir -v $Pdm ## Mettre l'ancienne partition home en partition de données.
Uuid=$(lsblk --noheadings  --output UUID,LABEL | grep $Lbl | awk '{print $1}')
Fstyp=$(lsblk --noheadings  --output FSTYPE,LABEL | grep $Lbl | awk '{print $1}')
sed -i "/\/$Lbl /d" /etc/fstab ## Supprimons la description  du montage de la partition
sed -i "/$Uuid/d" /etc/fstab ## Supprimons la description  du montage de la partition
echo /dev/disk/by-uuid/$Uuid /home $Fstyp defaults 0 1 | tee -a /etc/fstab  ## Définir la nouvelle partition  comme étant home.
grep -v "#" /etc/fstab ## Un rapide coup d'oeil.
mount -av ## Un rapide test de montage.
ls -al

Ne reste plus qu'à booter.

Dernière modification par geole (Le 06/02/2026, à 19:41)


Les écrans de l'installateur 26.04 https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity

Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#2 Le 05/02/2026, à 19:20

Watael

Re : Extraire le logiciel du "home" dans une autre partition.

#if (( $(lsblk --noheadings  --output UUID,LABEL,FSTYPE | grep "$Lbl" | wc -l) >1 )) #parce que NewHome n'est probablement pas réutilisé.
if (( $(lsblk --noheadings  --output LABEL | grep -c "$Lbl") >1 ))
then
    echo "Trop de partitions avec l'étiquette $Lbl ont  été détectées. Il est impossible choisir. Arrêt immédiat."; sleep 60; exit
else
    echo "Aucune partition avec l'étiquette $Lbl n'a été détectée. Il est impossible de poursuivre. Arrêt immédiat."; sleep 60; exit
fi

mais pourquoi toutes ces données dans la sortie de lsblk puisque tu ne cherches qu'un label ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 06/02/2026, à 16:35

geole

Re : Extraire le logiciel du "home" dans une autre partition.

Bonjour,
En fait,  je voulais en profiter  pour initialiser deux variables  Uuid et Fstyp dans la même commande.

Dernière modification par geole (Le 06/02/2026, à 16:35)


Les écrans de l'installateur 26.04 https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity

Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#4 Le 06/02/2026, à 17:03

Watael

Re : Extraire le logiciel du "home" dans une autre partition.

ce n'est pas ce que tu faisais, puisque la commande affiche uniquement le compte.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 06/02/2026, à 17:12

iznobe

Re : Extraire le logiciel du "home" dans une autre partition.

tu peux éclaircir , en utilisant les options " raccourcies " :

lsblk --noheadings  --output UUID,LABEL,FSTYPE

=>

lsblk -no UUID,LABEL,FSTYPE


Pour ça , vu que awk est utilisé , je suis presque sûr , meme si je ne sais pas comment tongue
que tu peux ne faire qu ' une commande :

Uuid=$(lsblk --noheadings  --output UUID,LABEL | grep $Lbl | awk '{print $1}')
Fstyp=$(lsblk --noheadings  --output FSTYPE,LABEL | grep $Lbl | awk '{print $1}')

Dernière modification par iznobe (Le 06/02/2026, à 17:21)

Hors ligne

#6 Le 06/02/2026, à 17:21

geole

Re : Extraire le logiciel du "home" dans une autre partition.

ubuntu@ubuntu:~$ lsblk -no UUID,LABEL,FSTYPE
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            squashfs
                                                            
4AF6-82D3                            FAT-UN                 vfat
                                                            
5B2A-C436                            FAT-UBUNTU             vfat
6359581570F973F0                     W21H2a                 ntfs
365667e2-c70f-4c02-bdf3-9220983bfb46 homeSAV                ext4
B364-95B8                            FAT-DEUX               vfat
43E02AD31E884337                     W21H2b                 ntfs
8ebd3b03-229b-412e-86f3-9ff6f84cb526 Home                   f2fs
6ff8e4b5-b1ee-4f77-81d2-a65b75a488bd UB-16.04               ext4
126b0987-3fc2-4e04-a272-1d8fca895b32                        ext4
06C05F3E05406FAC                     Finances               ntfs
f236602d-a7ae-4c7b-ae5f-71eb863db67e                        swap
e0c5b943-1c02-44a2-bbaf-87ebda5e363b BTRFS-Ubuntu24.04      btrfs
3700-2E4D                            EFILUBUNTU             vfat
79BF-928E                            ORI                    exfat
                                                            
3084-DD5D                            Ventoy                 exfat
                                                            
708bfee0-b027-4539-91b3-a5486b58dd73 writable               ext4
F085-06B2                            USBVENTOY              vfat
                                                            
5B86-517F                            SAV-FAT-UN             vfat
5295553242618335303                  Commun                 zfs_member
6359581570F973F0                     W21H2a-SAVE            ntfs
43E02AD31E884337                     W21H2b-SAVE            ntfs
e687bd71-9824-47b7-b336-d7873a323fc1 UB-25.10-SAVE          ext4
e0c5b943-1c02-44a2-bbaf-87ebda5e363b BTRFS-Ubuntu24.04-SAVE btrfs
20c3a52c-b057-4848-aaef-6fe401427366 BTRFS-24.04-SYNCR      btrfs
6ff8e4b5-b1ee-4f77-81d2-a65b75a488bd UB-16.04-SAVE          ext4
e96182da-935f-4ba6-916f-bcb751c24230 SAV-BACKINTIME         ext4
bdb98d5d-d946-4ee4-9335-01d356f32b35 UB-24.04-SAVE          ext4
                                                            
                                                            
                                                            
95B7-DCE7                            FAT-REFIND             vfat
09632147-0ee4-4b8c-b2a6-0aa48dca43ca Data                   f2fs
F2A7-5ED9                            FATISO                 vfat
e687bd71-9824-47b7-b336-d7873a323fc1 UB-25.10               ext4
bdb98d5d-d946-4ee4-9335-01d356f32b35 UB-24.04               ext4
5295553242618335303                  Commun                 zfs_member
ubuntu@ubuntu:~$ 

Celle recherchée étant
8ebd3b03-229b-412e-86f3-9ff6f84cb526 Home                   f2fs
je veux vérifier l unicité, récupérer le type de partition et le UUIUD.  Je sais faire en plusieurs commandes...

Dernière modification par geole (Le 06/02/2026, à 17:22)


Les écrans de l'installateur 26.04 https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity

Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#7 Le 06/02/2026, à 17:23

iznobe

Re : Extraire le logiciel du "home" dans une autre partition.

ce que je veux dire , c ' est que ça :

Uuid=$(lsblk --noheadings  --output UUID,LABEL | grep $Lbl | awk '{print $1}')

et ça :

Uuid=$(lsblk -no UUID,LABEL | grep $Lbl | awk '{print $1}')

sortent la même chose .
je n' avais pas mis la commande au complet dans mon message précédent ce n ' était qu ' un bout .

voir script de montage partition data , dans lequel il y a déjà des exemples utilisés avec les options " raccourcies " .
par exemple :

if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then
...

Dernière modification par iznobe (Le 06/02/2026, à 17:26)

Hors ligne

#8 Le 06/02/2026, à 17:45

Watael

Re : Extraire le logiciel du "home" dans une autre partition.

read -r fstype uuid label < <(lblk -no fstype,uuid,label | grep "$Lbl$")

mais tu ne peux pas faire le compte !

ou alors :

declare -A parts
read -r parts[fs] parts[uu] osef < <(lblk -no fstype,uuid,label | grep "$Lbl$")
((${#parts[*]} != 1 )) && { >&2 echo "trop ou pas assez de partitions"; exit 1;}
echo "fstype=${parts[fs]} uuid=${parts[uu]}"

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 06/02/2026, à 17:52

iznobe

Re : Extraire le logiciel du "home" dans une autre partition.

Attention à ça aussi :

sed -i "/\/$Lbl /d" /etc/fstab ## Supprimons la description  du montage de la partition

si $Lbl , vaut disons " ab " , et que tu as comme autre label de partitions : " abc " , " abcd " , alors , les 3 lignes seront supprimées

Hors ligne

#10 Le 06/02/2026, à 18:08

geole

Re : Extraire le logiciel du "home" dans une autre partition.

NON.
Et j ai du rectifier la commande initialle  qui supprimait les lignes contenant "Home"
Maintenant cela ne supprime que les lignes contenant "/Home "
donc avec un SLASH devant et un espace après
Il peut y en avoir plusieurs.... Mais   ce n'est pas logique.    D'ailleurs pas certain que le boot se passe bien.


Les écrans de l'installateur 26.04 https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity

Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#11 Le 06/02/2026, à 18:20

iznobe

Re : Extraire le logiciel du "home" dans une autre partition.

sinon , je ne comprends pas trop pourquoi tu supprimes la partition du fstab .
$Lbl , c ' est le label de la future partition home ou data ?
dans les 2 cas quel intérêt de supprimer la ligne du fstab ?
il y en a une à modifier et l ' autre a ajouter non ?

Ha , peut être , c ' est dans le cas où l ' utilisateur aurait ajouté cette partition via disques comme on l' a vu dans la discussion ?

-------------------------

une erreur  / un oublie de positionner une variable dans cette ligne :

sed -i  "s/\/home/$(echo $Pdm | sed 's/\//\\\//'g)/" /etc/fstab ; mkdir -v /media/Data ## Mettre l'ancienne partition home en partition de données.

non ?
=>

mkdir -v "$Pdm" 

Dernière modification par iznobe (Le 06/02/2026, à 18:31)

Hors ligne

#12 Le 06/02/2026, à 18:25

Watael

Re : Extraire le logiciel du "home" dans une autre partition.

sed -i '\@/'"$Lbl"'\>@d' /etc/fstab

c'est limpide, non ?
big_smile

Dernière modification par Watael (Le 06/02/2026, à 18:33)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 06/02/2026, à 18:26

geole

Re : Extraire le logiciel du "home" dans une autre partition.

Oui.  Oublié de remettre la variable.


Les écrans de l'installateur 26.04 https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity

Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#14 Le 06/02/2026, à 18:27

iznobe

Re : Extraire le logiciel du "home" dans une autre partition.

Watael a écrit :
sed -i '\@/'"$Lbl"'\>@d' /etc/fstab

c'est limpide, non ?
big_smile

lol , c' est censé faire quoi ça ???

Dernière modification par iznobe (Le 06/02/2026, à 18:39)

Hors ligne

#15 Le 06/02/2026, à 18:32

Watael

Re : Extraire le logiciel du "home" dans une autre partition.

    sed -i  "s/\/home/$(echo $Pdm | sed 's/\//\\\//'g)/" /etc/fstab ; mkdir -v /media/Data ## Mettre l'ancienne partition home en partition de données.

beurk.

    sed -i  's/\/home/'"${Pdm//\//\\\/})"'/' /etc/fstab ; mkdir -v /media/Data ## Mettre l'ancienne partition home en partition de données.

Dernière modification par Watael (Le 06/02/2026, à 18:32)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne