Come spostare / usr in una nuova partizione?

21

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 il LiveCD per questo?

    
posta Nathan Osman 02.08.2010 - 02:21
fonte

3 risposte

24

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 fai 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.

Si noti che non è possibile montare la nuova partizione su /usr mentre è in 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 di / etc / fstab

Devi conoscere l'UUID della tua nuova partizione. Puoi vedere il mapping facendo:

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

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 modifica ext4 come il tipo di file system che stai usando - dovresti sapere se hai impostato la partizione.

Elimina i vecchi file

Dopo il riavvio, i vecchi file in /usr sulla partizione di root saranno nascosti dalla nuova partizione montata su /usr . Ma possiamo usare alcuni mount bind trickery per ottenere i vecchi file e quindi eliminarli.

$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr
$ sudo umount /mnt

Ma alcuni piccoli errori di digitazione (ad esempio, premendo Invio quando avevi digitato solo sudo rm -rf /mnt ) potevano causare disastri, quindi avrei usato questo metodo solo se fossi molto sicuro di quello che stavi facendo, davvero non potrei affrontare qualsiasi tempo di inattività, o non ha avuto accesso fisico alla macchina e quindi non sono stati in grado di avviare un CD live o una chiavetta USB live.

    
risposta data Hamish Downer 02.08.2010 - 15:39
fonte
6

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, la cosa migliore è usare il LiveCD.

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

Dopo aver spostato i file sull'altra partizione devi aggiungere un altro mount in / etc / fstab per montare la nuova partizione in / usr.

    
risposta data txwikinger 02.08.2010 - 02:36
fonte
1

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).

Ecco come 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 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 cancellata quella cartella vuota.

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

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. Un passo che si è rivelato non molto saggio: ho cambiato il nome della partizione /usr attualmente montata in /usrBACKUP , solo così so che, quando riavvio il sistema, in effetti si riavvia nella partizione appena creata e non in quella precedente. Dopo di ciò, tutto glitchato sullo schermo, e ho dovuto spegnerlo premendo a lungo il tasto di accensione (genio come sono io) . Salta questo passaggio se non vuoi interferire con il tuo sistema.

  5. Riavvia il sistema

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

  7. Dopo aver verificato che tutto funzioni, puoi eliminare la vecchia partizione /usr . Terrò il mio nel caso qualcosa vada storto.

risposta data Aleksandar Stefanović 03.04.2016 - 12:14
fonte

Leggi altre domande sui tag