it-swarm.it

Come spostare / usr in una nuova partizione?

La mia cartella /usr deve essere spostata in una nuova partizione. Come posso farlo senza cancellare il contenuto?

Questo può essere fatto mentre Ubuntu è in esecuzione o devo usare LiveCD per questo?

24
Nathan Osman

Sarebbe più sicuro usare un Live CD, ma potresti fare:

  • copia tutti i file in una nuova partizione, assicurandoti che il contenuto di /usr non cambi mentre stai facendo questo.
  • modifica /etc/fstab in modo che /usr venga montato al prossimo riavvio
  • riavvio
  • elimina i vecchi file

Vedi sotto per i dettagli su ogni passaggio.

Nota che non puoi montare la nuova partizione su /usr durante l'esecuzione poiché ci saranno molti file in /usr che saranno aperti.

Copia dei file

Vorrei usare cp -a. -a è l'opzione di archiviazione. Dalla pagina man :

-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

Modifica/etc/fstab

Devi conoscere l'UUID della tua nuova partizione. Puoi vedere la mappatura facendo:

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

E quindi aggiungi questa riga a /etc/fstab:

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

Cambia l'UUID nel tuo UUID e cambia ext4 in modo che sia il tipo di file system che stai usando - dovresti saperlo se hai impostato la partizione.

Elimina i vecchi file

Dopo il riavvio, i vecchi file in /usr sulla partizione root verranno nascosti dalla nuova partizione montata su /usr. Ma possiamo usare alcuni trucchi di mount bind per arrivare ai vecchi file e poi eliminarli.

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

Ma alcuni lievi errori di digitazione (diciamo, premendo Invio quando hai digitato solo Sudo rm -rf /mnt) potrebbero causare disastri, quindi utilizzerei questo metodo solo se fossi molto fiducioso in quello che stavi facendo, davvero non riusciresti a gestire nessuno downtime o non aveva accesso fisico alla macchina e quindi non era possibile avviare un CD live o una chiavetta USB live.

25
Hamish Downer

Poiché la maggior parte delle librerie utilizzate sono in/usr, non consiglierei di spostare questa directory durante l'esecuzione di Ubuntu. In effetti, probabilmente ricevi messaggi di errore quando provi a farlo. Quindi, il migliore è usare il LiveCD.

È possibile utilizzare diverse possibilità per spostare/copiare i file cp, rsync ecc. Si desidera assicurarsi che tutti i collegamenti simbolici vengano creati e non solo copiati. cp e rsync hanno entrambi opzioni per questo.

Dopo aver spostato i file nell'altra partizione è necessario aggiungere un altro mount in/etc/fstab per montare la nuova partizione su/usr.

7
txwikinger

Attenzione: non ho idea di cosa sto facendo, sto solo copiando i comandi e facendo come suggerito dagli altri. Questo potrebbe essere il modo sbagliato di farlo, ma funziona per me (almeno per ora).

È così che l'ho fatto (seguendo la risposta di Hamish e i commenti):

  1. Copia tutti i file della partizione appena creata (sostituisci con la posizione della tua partizione, dovrebbe essere simile alla mia):

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. A questo punto mi sono reso conto che ha copiato tutto nella cartella /usr sulla partizione, che non funzionerà, quindi ho copiato tutto (con file manager) da quella cartella alla radice della partizione e successivamente alla cartella vuota eliminata.

  3. Modifica /etc/fstab (uguale alla risposta di Hamish, ovviamente, sostituisci con il tuo UUID)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. Un passaggio che non si è rivelato molto saggio: ho cambiato il nome della partizione /usr attualmente montata in /usrBACKUP, solo per sapere che, quando riavvio il sistema, in effetti si riavvia in la partizione appena creata e non quella vecchia. Dopodiché, tutto si è bloccato sullo schermo e ho dovuto spegnerlo premendo a lungo il tasto di accensione (geniale come sono). Saltare questo passaggio se non si desidera bloccare il sistema.

  5. Riavvia il sistema

  6. Dopo il riavvio, apri Monitor di sistema o un'applicazione simile per vedere se la tua nuova partizione /usr è montata e per verificare se tutto è andato come previsto.

  7. Dopo aver verificato che tutto sia a posto, puoi eliminare la tua vecchia partizione /usr. Terrò il mio nel caso in cui qualcosa vada storto.