Desideri trasferire la tua cartella home di Linux su un disco diverso? Ecco una procedura dettagliata e facile da seguire, che dovrebbe funzionare con qualsiasi distribuzione. Spostare la cartella home significa che potrai reinstallare Linux senza la preoccupazione di perdere i tuoi file personali.
Perché separare la cartella home?
Se stai configurando un nuovo computer o aggiungendo un hard disk a uno già esistente, potresti voler allocare la tua directory home su un’unità diversa da quella predefinita.
Una configurazione sempre più diffusa nei PC moderni prevede l’uso di un disco a stato solido (SSD) di dimensioni moderate per il sistema operativo, combinato con un disco ibrido a stato solido (SSHD) più grande, o un hard disk tradizionale (HD) per l’archiviazione dei dati. In alternativa, potresti avere un singolo HD nel tuo sistema e averne aggiunto un altro per aumentare lo spazio disponibile. Qualunque sia la tua motivazione, ecco un metodo semplice e preciso per trasferire la tua directory home.
A proposito, se stai eseguendo l’installazione di un sistema Linux da zero, probabilmente vedrai un’opzione per creare una directory home distinta nel programma di installazione della tua distribuzione. In genere, ti basterà accedere alle opzioni di partizionamento, creare una partizione dedicata e montarla in “/home”. Tuttavia, se hai già installato una distribuzione Linux, puoi seguire queste istruzioni per spostare la tua directory home attuale in una nuova posizione senza perdere nulla o dover reinstallare il sistema operativo.
Ora, prima di iniziare, effettua un backup.
Individuare l’unità
Se hai appena collegato un disco a un computer Linux o hai installato Linux su una delle unità di un nuovo computer con più dischi e hai riavviato il sistema, non ci sono molte indicazioni sulla presenza della nuova unità.
Il comando `fdisk` elenca le unità e le relative partizioni.
sudo fdisk -l
Scorri il risultato fino a identificare la nuova unità. La prima unità è denominata `/dev/sda`, la seconda `/dev/sdb` e così via, con l’ultima lettera che aumenta progressivamente. Quindi, `/dev/sde` corrisponderebbe al quinto disco rigido del sistema.
In questo esempio, la nuova unità è la seconda da montare nel sistema. Dobbiamo quindi individuare una voce per `/dev/sdb`.
Come si vede sopra, `/dev/sdb` è evidenziato. Noterai che non è presente una riga che descriva una partizione. Si tratta di un disco nuovo, quindi non ne avrà ancora una. Dobbiamo creare la partizione, usando fdisk. Se il tuo disco rigido non è `/dev/sdb`, assicurati di sostituire `/dev/sdb` con l’identificatore reale del tuo nuovo disco nel comando.
sudo fdisk /dev/sdb
Quando fdisk ti chiede un comando, premi il tasto ‘p’. In questo modo visualizzerai la tabella delle partizioni per il disco. Sappiamo che non ne avrà una, ma otteniamo comunque informazioni utili sull’unità. Ciò ci consente di verificare che l’unità su cui andremo a creare la partizione sia quella che intendiamo utilizzare.
Ci viene comunicato che l’unità è da 1 TB, il che corrisponde a ciò che ci aspettiamo in questa macchina di prova, quindi possiamo procedere.
Creare una partizione
Premi il tasto ‘n’ per una nuova partizione, quindi premi ‘p’ per una partizione primaria. Quando viene chiesto il numero della partizione, premi ‘1’.
Creeremo una singola partizione che copra l’intero disco, quindi quando ti viene chiesto il primo settore premi Invio per accettare il valore predefinito. Successivamente, ti verrà chiesto l’ultimo settore: di nuovo, Invio per accettare il valore predefinito.
Sebbene fdisk confermi la creazione di una partizione Linux da 1 TB, che è la partizione numero 1, non è ancora stato modificato nulla sul disco. Fino a quando non si ordina a fdisk di scrivere le modifiche sull’unità, questa non verrà toccata. Una volta che sei sicuro delle tue scelte, premi il tasto ‘w’ per scrivere le modifiche sull’unità.
La partizione è stata scritta su `/dev/sdb`. Controlliamo cosa è appena successo. Useremo fdisk ancora una volta su `/dev/sdb`.
sudo fdisk /dev/sdb
Premi il tasto ‘p’ per visualizzare la tabella delle partizioni e vedrai che ora è presente una partizione per l’unità. Poiché era la prima partizione su questa unità, è denominata `/dev/sdb1`. Una seconda partizione sarebbe denominata `/dev/sdb2`, e così via.
Non vogliamo apportare altre modifiche, quindi premi il tasto ‘q’ per uscire.
Creare un file system sulla partizione
Dobbiamo creare un file system sulla partizione. Questo si ottiene facilmente con il comando `mkfs`. Nota che è necessario includere il numero della partizione nel comando. Fai attenzione a digitare `/dev/sdb1` (la partizione) e non `/dev/sdb` (l’unità).
sudo mkfs -t ext4 /dev/sdb1
Il file system verrà creato e verrai riportato al prompt dei comandi.
Montare la nuova unità
Per usare la nuova unità, dobbiamo montare la partizione in un punto di montaggio nel file system. A essere precisi, non stiamo montando né l’unità né la partizione, ma il file system sulla partizione, integrandolo nella struttura del file system del tuo sistema.
Il punto `/mnt` è un buon punto di montaggio temporaneo per consentirci di copiare i dati sulla nuova unità. Useremo il comando `mount` per montare il file system sulla prima partizione di `/dev/sdb` in `/mnt`.
sudo mount /dev/sdb1 /mnt
Se tutto va bene, verrai riportato alla riga di comando senza messaggi di errore. Verifichiamo se possiamo passare alla directory nel nostro file system appena montato.
cd /mnt
Sì, possiamo. Vediamo cosa c’è qui.
ls -ahl
Siamo nel nostro nuovo file system. La cartella predefinita “lost+found” non è necessaria, quindi possiamo rimuoverla.
sudo rm -rf lost+found
Copiare la cartella Home
Dobbiamo copiare tutto dalla vecchia directory home nel file system appena montato. L’uso delle opzioni `r` (ricorsivo) e `p` (conserva) garantirà che tutte le sottodirectory vengano copiate e che le proprietà, i permessi e altri attributi dei file vengano mantenuti.
sudo cp -rp /home/* /mnt
Al termine della copia, usa `ls` per controllare e verificare che i tuoi dati siano dove ti aspetti nel nuovo file system. In altre parole, se `/mnt` fosse la tua directory home, sarebbe tutto presente e corretto?
ls
ls dave
Probabilmente vorrai essere più accurato di quanto non lo fossimo noi nella macchina di prova su cui è basato questo articolo. Come precauzione, rinomineremo e manterremo la tua vecchia directory `/home` finché non sarai sicuro che puoi eliminarla in tutta sicurezza.
sudo mv /home /home.orig
E creeremo una nuova directory home vuota.
sudo mkdir /home
Useremo questa nuova directory home vuota come punto di montaggio per il file system sul nuovo disco. Dobbiamo smontarlo da `/mnt` e rimontarlo su `/home`. Nota che il comando `umount` non ha una “n” dopo la “u”.
sudo umount /dev/sdb1
sudo mount /dev/sdb1 /home/
Testare la nuova directory home
Vediamo quali sono gli attributi della partizione `/dev/sdb1`:
df /dev/sdb1
Viene visualizzato il nome del file system, la dimensione della partizione, lo spazio utilizzato e disponibile, e, soprattutto, dove è montata. Ora è la nostra directory `/home`. Ciò significa che dovremmo essere in grado di riferirci ad essa esattamente come facevamo con la vecchia directory `/home`.
Se ci spostiamo in un punto qualsiasi del file system, dovremmo essere in grado di tornare a `/home` usando la scorciatoia `~`.
cd /
cd ~
pwd
ls
cd /home
ls
cd dave
ls
ls -a
Possiamo muoverci nel file system avanti e indietro verso `/home` usando i comandi espliciti e la scorciatoia `~`. Le cartelle, i file e i dotfile che ci aspetteremmo sono tutti presenti. Sembra tutto a posto.
Se mancasse qualcosa, potremmo copiarlo dalla directory `/home.orig`, a cui abbiamo ancora accesso nella root del file system. Ma sembra tutto a posto.
Ora dobbiamo fare in modo che `/dev/sdb1` venga montato automaticamente ogni volta che il computer viene avviato.
Modifica di fstab
Il file `fstab` contiene le descrizioni dei file system che verranno montati all’avvio del sistema. Prima di apportare modifiche, ne faremo una copia di backup a cui possiamo tornare in caso di problemi.
sudo cp /etc/fstab /etc/fstab.orig
Ora possiamo modificare il file `fstab`.
sudo gedit /etc/fstab
È necessario aggiungere una riga alla fine del file per montare la nostra nuova directory `/home`. Se gli identificatori dell’unità e della partizione sono diversi da quelli utilizzati in questo esempio, sostituiscili con quelli `/dev/sdb1` mostrato qui.
Digita il nome della partizione all’inizio della riga, quindi premi Tab.
Digita il punto di montaggio `/home` e premi Tab.
Digita la descrizione del file system `ext4` e premi Tab.
Digita `defaults` per le opzioni di montaggio e premi Tab.
Digita la cifra `0` per l’opzione di dump del file system e premi Tab.
Digita la cifra `0` per l’opzione di controllo del file system.
Salva il file `fstab`.
Riavviare il sistema
Dobbiamo riavviare il sistema per verificare che tutto sia andato secondo i piani e che la connessione alla nuova directory `/home` sia perfetta.
In caso contrario, hai ancora la rete di sicurezza della directory `/home` originale e del file `fstab`, che potrebbero essere ripristinati se necessario. Grazie alle precauzioni che abbiamo preso, copiando la directory `/home` e il file `fstab`, potresti riportare facilmente il sistema allo stato in cui si trovava prima di iniziare.
sudo reboot now
Verifiche finali
Al riavvio del sistema, controlliamo che la tua directory `/home` si trovi realmente sul nuovo disco e che il sistema non sia (miracolosamente) tornato a usare la vecchia directory `/home`.
df /dev/sdb1
Ottimo, è montato su `/home`. Obiettivo raggiunto.
Una volta che sei perfettamente sicuro di non aver più bisogno della copia di sicurezza della vecchia directory `/home`, puoi eliminarla:
cd /
sudo rm -rf home.orig/
E, naturalmente, se ti rendi conto che qualcosa non è stato copiato dalla vecchia `/home` nella nuova `/home`, potrai recuperarlo dal backup che hai effettuato prima di iniziare.
Casa dolce casa
Ora che hai separato la tua directory `/home` dal resto della partizione del sistema operativo, potrai reinstallare il sistema operativo e i tuoi dati rimarranno intatti. Tutto quello che dovrai fare è modificare il file `fstab` per montare la seconda unità in `/home`.
E poiché tutti i tuoi dotfile si trovano nella directory `/home`, quando avvierai le varie applicazioni, troveranno tutte le tue impostazioni, preferenze e dati.
Risolvi il problema delle reinstallazioni e riduci il rischio degli aggiornamenti.