web-dev-qa-db-fra.com

Comment déplacer / usr vers une nouvelle partition?

Mon dossier /usr doit être déplacé vers une nouvelle partition. Comment puis-je faire cela sans effacer le contenu?

Cela peut-il être fait pendant que Ubuntu est en cours d’exécution, ou dois-je utiliser le LiveCD pour cela?

24
Nathan Osman

Il serait plus sûr d'utiliser un Live CD, mais vous pourriez faire:

  • copiez tous les fichiers sur une nouvelle partition, en vous assurant que le contenu de /usr ne change pas pendant cette opération.
  • éditez /etc/fstab pour que /usr soit monté au prochain redémarrage
  • redémarrer
  • supprimer les anciens fichiers

Voir ci-dessous pour plus de détails sur chaque étape.

Notez que vous ne pouvez pas monter la nouvelle partition sur /usr lors de son exécution car il y aura beaucoup de fichiers dans /usr qui seront ouverts.

Copier les fichiers

Je voudrais utiliser cp -a. -a est l'option d'archivage. À partir de la page de manuel :

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

Modification de/etc/fstab

Vous devez connaître l'UUID de votre nouvelle partition. Vous pouvez voir la cartographie en faisant:

$ ls -l /dev/disk/by-uuid/

Et ajoutez ensuite cette ligne à /etc/fstab:

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

Modifiez l'UUID en votre UUID, puis changez ext4 pour qu'il corresponde au type de système de fichiers que vous utilisez. Vous devez le savoir si vous avez configuré la partition.

Supprimer les anciens fichiers

Après le redémarrage, les anciens fichiers de /usr sur la partition racine seront masqués par la nouvelle partition montée sur /usr. Mais nous pouvons utiliser une astuce de montage pour récupérer les anciens fichiers puis les supprimer.

$ Sudo mount --bind / /mnt
$ Sudo rm -rf /mnt/usr/*
$ Sudo umount /mnt

Mais quelques légères erreurs de frappe (disons, si vous appuyez sur Entrée lorsque vous n’avez saisi que Sudo rm -rf /mnt) risquent de provoquer un désastre; aucun accès physique à la machine et, par conséquent, étaient incapables de démarrer à partir d'un CD ou d'une clé USB.

25
Hamish Downer

Comme la plupart des bibliothèques utilisées sont dans/usr, je ne recommanderais pas de déplacer ce répertoire lors de l'exécution d'Ubuntu. En fait, vous obtenez probablement des messages d'erreur lorsque vous essayez de le faire. Par conséquent, le mieux est d'utiliser le LiveCD.

Vous pouvez utiliser plusieurs possibilités pour déplacer/copier les fichiers cp, rsync, etc. vous voulez vous assurer que tous les liens symboliques sont créés et pas seulement copiés. cp et rsync ont tous deux des options pour cela.

Après avoir déplacé les fichiers vers l’autre partition, vous devez ajouter un autre montage dans/etc/fstab pour monter la nouvelle partition sur/usr.

7
txwikinger

Attention: Je ne sais pas du tout ce que je fais, je ne fais que copier des commandes et faire ce que suggèrent les autres. C'est peut-être la mauvaise façon de le faire, mais cela fonctionne pour moi (du moins pour le moment).

Voici comment je l'ai fait (en suivant la réponse de Hamish et ses commentaires):

  1. Copiez tous les fichiers de la partition nouvellement créée (remplacez-la par l'emplacement de votre partition, elle devrait ressembler à la mienne):

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. À ce stade, je me suis rendu compte que tout était copié dans le dossier /usr de la partition, qui ne fonctionnerait pas, alors j’ai tout copié (avec le gestionnaire de fichiers) de ce dossier à la racine de la partition, puis le dossier vide supprimé.

  3. Editez /etc/fstab (comme dans la réponse de Hamish, remplacez-le par votre UUID)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. Une étape qui s’est avérée peu sage: j’ai changé le nom de la partition /usr actuellement montée en /usrBACKUP, pour que je sache que lorsque je redémarre le système, il redémarre en fait dans la partition nouvellement créée, et non dans la partition. le vieux. Après cela, tout s’est incrusté sur l’écran, et j’ai dû le mettre hors tension en appuyant longuement sur la touche marche/arrêt (le génie que je suis). Ignorez cette étape si vous ne voulez pas déranger votre système.

  5. Redémarrez le système

  6. Après le redémarrage, ouvrez System Monitor ou une application similaire pour voir si votre nouvelle partition /usr est montée et pour vérifier si tout s'est déroulé comme prévu.

  7. Après avoir vérifié que tout va bien, vous pouvez supprimer votre ancienne partition /usr. Je garderai le mien au cas où quelque chose se passerait mal.