Mon /usr
dossier 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?
Mon /usr
dossier 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?
Réponses:
Il serait plus sûr d'utiliser un Live CD, mais vous pouvez faire:
/usr
ne change pas pendant que vous faites cela./etc/fstab
sorte que /usr
sera monté au prochain redémarrageVoir ci-dessous pour plus de détails sur chaque étape.
Notez que vous ne pouvez pas monter la nouvelle partition /usr
en cours d'exécution car il y aura beaucoup de fichiers /usr
qui seront ouverts.
J'utiliserais cp -a
. -a
est l'option d'archivage. Depuis 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
Vous devez connaître l'UUID de votre nouvelle partition. Vous pouvez voir le mappage en faisant:
$ ls -l /dev/disk/by-uuid/
Et puis ajoutez cette ligne à /etc/fstab
:
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Modifiez l'UUID en votre UUID et changez ext4
pour être le type de système de fichiers que vous utilisez - vous devez le savoir si vous avez configuré la partition.
Après le redémarrage, les anciens fichiers de /usr
la partition racine seront masqués par la nouvelle partition montée /usr
. Mais nous pouvons utiliser une ruse de montage pour accéder aux anciens fichiers, puis les supprimer.
$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt
Mais une légère erreur de frappe (par exemple, appuyer sur Entrée lorsque vous n'aviez tapé que sudo rm -rf /mnt
) pourrait provoquer un désastre, donc je n'utiliserais cette méthode que si vous étiez très confiant dans ce que vous faisiez, ne pouviez vraiment pas faire face à un temps d'arrêt ou n'aviez pas accès physique à la machine et n'ont donc pas pu démarrer à partir d'un CD live ou d'une clé USB live.
rsync
place?
rsync -avz
. Rsync vous permet de redémarrer les copies et doit généralement être utilisé lors du déplacement entre des partitions, des périphériques de bloc ou des machines.
cp
. Il ne préserve pas les LIENS DURS. Cela interrompra les mises à niveau du package à l'avenir. Par exemple, /usr/bin/s2p
il /usr/bin/psed
s'agit du même fichier. Le déplacement avec cp
créera 2 versions indépendantes de ce fichier. Faites à la rsync -aH
place.
rsync -avH a/ b
différemment de rsync -avH a b
, copier le contenu du dossier a
(c'est-à-dire a/*
) dans le premier cas et le dossier lui-même dans la seconde. Assurez-vous d'utiliser la barre oblique ici.
Étant donné que la plupart des bibliothèques utilisées se trouvent 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 dans / usr.
Attention: je n'ai aucune idée de ce que je fais, je ne fais que copier des commandes et faire comme suggéré par les autres. Ce n'est peut-être pas la bonne façon de le faire, mais cela fonctionne pour moi (pour l'instant, au moins).
Voici comment je l'ai fait (suite à la réponse de Hamish et aux commentaires):
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
À ce stade, je me suis rendu compte qu'il a tout copié dans le /usr
dossier de la partition, ce qui ne fonctionnera pas , j'ai donc tout copié (avec le gestionnaire de fichiers) de ce dossier à la racine de la partition, et supprimé ce vide dossier par la suite.
Modifier /etc/fstab
(comme dans la réponse de Hamish, bien sûr, remplacer par votre UUID)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Une étape qui s'est avérée peu judicieuse: j'ai changé le nom de la /usr
partition actuellement montée en /usrBACKUP
, juste 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 l'ancienne. . Après cela, tout a glissé sur l'écran, et j'ai dû l'éteindre en appuyant longuement sur la touche marche / arrêt (le génie que je suis) . Ignorez cette étape si vous ne voulez pas faire défaut à votre système.
Redémarrez le système
Après le redémarrage, ouvrez le Moniteur système ou une application similaire pour voir si votre nouvelle /usr
partition est montée et pour vérifier si tout s'est déroulé comme prévu.
Après avoir vérifié que tout va bien, vous pouvez supprimer votre ancienne /usr
partition. Je garderai le mien au cas où quelque chose se passerait mal.
sudo mount -a
permettre de continuer à fonctionner?
rsync
est tellement mieux adapté à cela quecp