Per leggere i file da una memoria esterna con Ubuntu da linea di comando è necessario "montare" la partizione tramite il comando dedicato, specificando esplicitamente se i file devono essere disponibili in "sola lettura" oppure se potremo anche modificarli e crearne di nuovi. Gli argomenti cambiano leggermente a seconda che il disco esterno o la chiavetta siano formattati con file system NTFS, exFAT oppure ext4, ma Ubuntu li supporta tutti senza problemi. Vediamo come fare
La procedura si applica principalmente ad Ubuntu Server o, più in generale, in tutti i casi in cui l'interfaccia grafica non sia installata o avviata. Con l'edizione dotata di interfaccia grafica (il "normale" Ubuntu Desktop, per capirci) le chiavette e i dischi USB collegati al PC divengono automaticamente disponibili, senza bisogno di fare altro.
Seguendo la procedura indicata in questo articolo, sarà possibile leggere e scrivere i file dalla chiavetta USB o memoria esterna da linea di comando. L'unità disco rimarrà disponibile fino al prossimo riavvio del PC: a quel punto, se desidereremo utilizzare di nuovo la memoria esterna, dovremo impartire nuovamente il comando. Per fare in modo che le unità USB vengano auto-montate ad ogni riavvio, seguire quest'altra procedura:
Daremo per scontato che la chiavetta USB o il disco esterno siano già stati formattati con filesystem NTFS o FAT (Windows), ext4 (Linux) oppure exFAT. Raccomando di testare preventivamente il dispositivo su un altro computer dotato di interfaccia grafica, scrivendo e leggendo qualche file, prima di proseguire.
Dischi e chiavette USB con Ubuntu, Passo 1: Controllare che il disco non sia già montato
Verifichiamo per prima cosa che il disco o la chiavetta USB alla quale vogliamo accedere non sia già montato impartendo:
df -h
Ispezioniamo, in particolare, la colonna Size
: se vediamo una riga che corrisponde alla capienza del disco o chiavetta USB che vogliamo utilizzare, significa che il dispositivo è già disponibile nel percorso indicato dall'ultima colonna (Mounted on
).
Dischi e chiavette USB con Ubuntu, Passo 2: Scoprire il nome del disco e della partizione
Dobbiamo ora scoprire il nome che il sistema operativo ha assegnato alla nostra chiavetta o disco esterno. Allo scopo, impartire:
sudo fdisk -l
Dalla lista ottenuta, ispezioniamo i risultati. Nello specifico, vogliamo trovare la voce che riporta una grandezza in gigabyte pari alla nostra unità. In questa immagine, ad esempio, io stavo cercando di montare un SSD esterno da 1 TB che, per il solito motivo, viene identificato come 931.53 GiB
» Leggi anche: [guida] Bit e byte, spiegazione facile: differenza fra megabit, megabyte, mebibyte, terabyte, tebibyte e altri multipli
Scopriamo così il nome dell'unità. Nel mio caso, è /dev/sdb
Ma /dev/sdb
è il nome del disco. In realtà, a noi interessa il nome della partizione che vogliamo montare. Le singole partizioni sono riportate nella medesima lista, dopo ogni disco. Sono facilmente identificabili perché riportano l'intestazione Device
, Start
, End
eccetera.
Linux assegna ad ogni partizione il nome del disco che la contiene, seguito da un numero: nel mio caso, il disco contiene una sola partizione che si chiama, appunto, /dev/sdb1
.
Come ulteriore esempio: nello screenshot seguente ho collegato una chiavetta da 16 GB con due partizioni. La chiavetta è denominata /dev/sdc
e le due partizioni, rispettivamente, /dev/sdc1
e /dev/sdc5
Dischi e chiavette USB con Ubuntu, Passo 3: Creare il mountpoint
A questo punto dobbiamo creare un mountpoint: un modo altisonante per dire che dobbiamo creare una cartella nella quale, al passo successivo, "agganceremo" (mount) il disco esterno o la chiavetta USB alla quale desideriamo accedere.
Possiamo scegliere una directory qualsiasi, anche preesistente! Ma, per convenzione, i mountpoint per le unità di memoria esterne si creano sotto /media
. Procediamo dunque a creare il mountpoint:
mkdir /media/usbdisk
Possiamo scegliere un nome qualsiasi, ma io sono solito usare usbdisk
per SSD e HDD esterni oppure chiavetta
per, uh, la chiavetta USB.
Verifichiamo il risultato dell'operazione con
ls -la /media
Nello screenshot seguente si vede che, oltre ad aver creato il mountpoint /media/usbdisk
, io ne avevo già creato un altro in precedenza chiamandolo chiavetta
Quando una partizione viene montata in un mountpoint, il contenuto della partizione sostituisce temporaneamente il contenuto della cartella. Ma, attenzione bene! Il vecchio contenuto NON viene cancellato: rimarrà semplicemente "invisibile" fino a quando non smonteremo la partizione.
Io sono solito sfruttare questo meccanismo scrivendo un file vuoto in ogni mountpoint che creo. Così facendo, sono sempre in grado di capire "a colpo d'occhio" se sto guardando la cartella "vuota" oppure se sto effettivamente guardando il filesystem dell'unità montata. Per farlo, impartire:
touch "/media/usbdisk/Se mi vedi, il disco non è montato"
Ovviamente, sostitute il percorso /media/usbdisk/
con la cartella che avete creato un attimo fa.
Dischi e chiavette USB con Ubuntu, Passo 4: Montare l'unità
A questo punto abbiamo tutti gli elementi che ci servono per montare la memoria esterna nel mountpoint e accedere così ai file.
Il comando esatto varia a seconda del filesystem presente sulla partizione che desideriamo montare, ma ha questa struttura di base:
-o rw,nodev,...
: sono opzioni varie, il cui significato è spiegato nella documentazione/dev/sdb1
: è il nome della partizione che vogliamo montare, così come scoperto qualche Passo fa tramite il comandosudo fdisk -l
/media/usbdisk
: è il percorso della cartella (mountpoint) nella quale montare la partizione
Per montare dischi e chiavette USB con filesystem NTFS (Windows), FAT oppure exFAT:
sudo mount -o rw,nodev,windows_names,uid=root,gid=root,dmask=000,fmask=011 /dev/sdb1 /media/usbdisk
Per montare dischi e chiavette USB con filesystem ext4 oppure qualsiasi altro filesystem proprio del mondo Linux:
sudo mount -o rw,nodev /dev/sdb1 /media/usbdisk
Una nota sui permessi
Se il filesystem del disco esterno o chiavetta USB che abbiamo appena montato è ext4 (oppure qualsiasi altro del mondo Linux), il sistema operativo rispetterà i permessi di lettura, scrittura ed esecuzione per proprietario, gruppo, altri su file e cartelle. Potremo quindi modificarli e gestirli come di consueto. Ad esempio: impartendo
chmod ugo=rwX /media/usbdisk/ -R
Permetteremo l'accesso completo in lettura e scrittura a tutti.
Se però il filesystem è NTFS, FAT oppure exFAT, i permessi non verranno onorati e, pur tentando di usare chmod
, non otterremo alcun risultato. In tal caso, i permessi vengono definiti al momento del mount. Nell'istruzione fornita sopra, nello specifico, abbiamo indicato che:
- l'utente proprietario deve essere:
root
- il gruppo proprietario deve essere:
root
- tutti posso leggere e scrivere le cartelle e i file
- solo l'utente proprietario (
root
) può eseguire i file salvati sulla chiavetta
Dischi e chiavette USB con Ubuntu, Passo 5: Verificare il risultato del mount
Se non otteniamo errori in risposta al comando di mount, l'operazione è andata a buon fine. Impartiamo quindi di nuovo il comando:
df -h
Nella lista, dovremo ora trovare un nuovo mountpoint:
Dischi e chiavette USB con Ubuntu, Passo 6: Accedere ai file
I file e le cartelle presenti sul disco esterno o sulla chiavetta USB sono ora accessibili nel nostro mountpoint. Per verificarlo, impartiamo qualcosa di simile a questo per ottenere la lista dei documenti presenti sull'unità esterna:
ls -la /media/usbdisk
Per assicurarci che lettura e scrittura funzionino, creiamo una cartella, un file all'interno della stessa e leggiamolo:
cd /media/usbdisk/
mkdir cartella_test
echo "Funziona" > cartella_test/file_test.txt
cat cartella_test/file_test.txt
Perfetto!
Dischi e chiavette USB con Ubuntu, Passo 7: Espellere e scollegare l'unità
In caso desiderassimo scollegare l'unità, ricordiamo che dobbiamo prima smontarla! È un po' come usare Rimozione sicura hardware
per espellere le chiavette in ambiente Windows, solo che qui è estremamente più importante per garantire l'integrità dei dati.
Allo scopo, impartire un comando simile a questo:
sudo umount /dev/sdb*
Sostituendo, naturalmente, il nome del disco che vogliamo smontare. L'asterisco in fondo va conservato: fa sì che vengano smontate tutte le partizioni del disco.