Allora inventatevi come mettere un piolo quadrato in un buco rotondo. – Apollo 13 (1995)
[youtube https://www.youtube.com/watch?v=uBe-BZMY2nw&w=560&h=315]
Ho già scritto di come un semplice disco SSD connesso via Firewire 800 al mio iMac del 2008 abbia trasformato una macchina ansimante e già pronta per la pensione in un computer moderno ed adeguato ad un utilizzo casalingo.
La transizione dal disco meccanico al disco SSD è stata facile. Ma poiché il disco interno originale dell’iMac era da 500 GB e l’SSD da soli 250 GB, non è stato possibile copiare semplicemente tutto il contenuto del vecchio disco nel nuovo.
Ho deciso quindi di usare il disco SSD per il solo sistema operativo, le applicazioni e per i documenti degli altri utenti (in questo caso specifico mia moglie e le mie figlie).
Tutti i file multimediali, ebook, musica, foto, video, e la maggior parte dei miei file (che consumano un sacco di spazio: solo i pdf dei vecchi numeri di Byte occupano circa 50 GB e fra mp3 e fotografie se ne vanno altri 150 GB) dovevano invece finire sul disco meccanico interno, sia per motivi di spazio sia perché il disco interno è comunque in grado di gestirli senza rallentamenti.
Non volevo comunque modificare l’organizzazione dei file nelle rispettive cartelle, ed era quindi indispensabile poter cambiare la posizione fisica dei file nei due dischi rigidi senza che l’utente se ne rendesse conto.
Sembra una cosa complicata, ma non lo è se si sanno usare i collegamenti simbolici.
Collegamenti simbolici
Nei sistemi operativi basati su Unix, come Linux e OS X, i collegamenti simbolici
(in inglese symlink o soft link) sono file che si riferiscono ad altri file o cartelle. Insomma, un collegamento simbolico è più o meno un file che contiene all’interno solo un puntatore ad un altro file o ad un’altra cartella.
Non è un caso che il Finder di OS X li rappresenti graficamente con l’icona di un documento vuoto con in basso una piccola freccia ricurva.
I collegamenti simbolici possono puntare non solo a file posti sullo stesso disco rigido (volume) ma anche a file su altre partizioni dello stesso disco o di altri dischi rigidi. Proprio questa caratteristica faceva al caso mio.
I computer Apple dispongono già dai tempi di Mac OS Classico degli alias, un tipo di file molto simile ai collegamenti simbolici. Rispetto a questi, gli alias hanno il vantaggio di continuare a puntare al file a cui si riferiscono anche se questo viene spostato in un’altra posizione del disco rigido, mentre i collegamenti simbolici non si accorgono della cancellazione o dello spostamento dei file a cui puntano, diventando collegamenti morti o collegamenti orfani (dead link o orphaned link).
Però gli alias occupano molto più spazio sul disco di un collegamento simbolico (anche alcune centinaia di kB ciascuno), non sono portabili su altri sistemi operativi e non possono essere gestiti dalla riga di comando ma solo dall’interfaccia grafica di OS X.
Anche se questo caso specifico avrei potuto usarli comunque, ho preferito utilizzare uno strumento standard dei sistemi basati su Unix piuttosto che uno proprietario. E poi, in fondo tutta questa discussione è in fondo solo una scusa per introdurre i symlink…
Trasferimento dei file
Sui miei Mac da anni salvo tutti i miei documenti in alcune cartelle ben definite, situate nella mia cartella Inizio
, per capirci la cartella contrassegnata con l’icona della casetta (nei sistemi Unix questa cartella è chiamata la home
dell’utente, da cui deriva l’icona con cui viene rappresentata dal Finder).
Le mie cartelle standard sono poche, ma ciascuna di esse è divisa ulteriormente in decine o centinaia di altre cartelle annidate l’una nell’altra. Questa organizzazione mi consente di associare i file alla loro posizione all’interno di ciascuna cartella, una specie di ricerca visuale che per me è decisamente più pratica di quella effettuata tramite Spotlight e simili (anche se a volte usare Spotlight è indispensabile).
Quella che segue è l’immagine della mia cartella home prima della transizione al disco SSD.
Le cartelle “Documentation”, “Research” e “Papers” sono le più grosse e contengono attualmente alcune decine di GB ciascuna, fino ad oltre 100 GB per “Research”. Nella cartella “My Documents” conservo tutti i miei documenti di lavoro e personali, mentre uso la cartella standard “Documents” solo per le cartella di sincronizzazione di Dropbox e di Copy, i documenti di nvALT e di MacJournal e, ahimè, i dati utente di Microsoft Office (perché mai la Microsoft si ostini a metterli lì invece che in Library mi è sempre stato incomprensibile).
Quello che ho fatto in definitiva è stato spostare la maggior parte di queste cartelle dal disco SSD al disco rigido interno, sostituendole nella mia home con dei collegamenti simbolici che puntano alle cartelle spostate.
Ad esempio, dopo aver spostato la cartella “Documentation” sul disco interno “Files HD”, ho creato un collegamento simbolico alla nuova posizione di “Documentation” eseguendo da Terminale il comando
$ ln -s "/Volumes/Files HD/Documentation" "~/Documentation"
dove il simbolo ~
indica la cartella home. Le virgolette sono necessarie ogni volta che, come in questo caso, il nome del file contiene degli spazi. In generale, il collegamento simbolico viene creato con il comando ln -s
seguito dal percorso alla cartella (o al file) originale e dal percorso del symlink.
$ ln -s /percorso/al/file/originale /percorso/del/symlink
Volendo avrei anche potuto tradurre in italiano il nome originale della cartella “Documentation”, modificando il nome del collegamento simbolico.
$ ln -s "/Volumes/Files HD/Documentation" "~/Documentazione"
Alla fine di tutto la mia cartella home è diventata
Sembra che non sia cambiato nulla, a meno di non far caso alla piccola freccetta sull’icona delle cartelle spostate. In realtà ho spostato tutte le cartelle sul disco interno originale, lasciando sull’SSD solo “My Documents” che contiene i file che uso più spesso e che comunque è grande solo una decina di GB.
Qualcosa di simile l’ho fatta anche per la cartella “Download”, che occupa centinaia di GB di spazio sul disco rigido. Essendo una delle cartelle generate automaticamente da OS X al momento della creazione dell’account utente, ho preferito non trasferirla sul disco interno. Ho scelto invece di creare una cartella omonima sul disco interno e di generare poi i collegamenti simbolici a ciascuna delle cartelle contenute al suo interno.
Ad esempio, il comando per creare il collegamento simbolico alla cartella contenente i miei download relativi a Linux è
$ ln -s "/Volumes/Files HD/Downloads/Linux" "~/Downloads/Linux"
Dopo aver trasferito tutto il contenuto sul disco interno, la mia cartella Download si presenta così:
Dettagli (quasi) tecnici
La descrizione precedente sarebbe più che sufficiente se non si scontrasse con una ulteriore esigenza.
Avevo deciso infatti di riformattare il disco rigido interno prima di cominciare ad usarlo come descritto sopra. Per esperienza so che, dopo anni di salvataggi e cancellazioni di file e dopo quattro aggiornamenti di OS X (passando senza mai reinstallare il sistema operativo da Leopard a Mavericks), non fa certo male rinfrescare la struttura dati del disco rigido.
Ciò significava però dover salvare preliminarmente i file di ciascun utente su un rigido USB, formattato con Disk Utility in formato Mac OS X Extended (Journaled) e chiamato “Backup HD”, assicurandosi di fare errori e non dimenticare nulla (per stare più tranquilli, è fondamentale aver fatto anche un backup completo dei file con Time Machine).
Per la copia dei file dei vari utenti ho cercato di usare il Finder, ma in alcuni casi, per problemi di permessi, sono stato obbligato ad usare la linea di comando.
Per copiare sul disco “Backup HD” l’intera cartella home dell’utente con nome breve “user” (il nome breve di un utente è quello che si vede nel Finder accanto all’icona della casetta), ho eseguito i comandi
$ mkdir "/Volumes/Backup HD/user"
$ cd ~
$ cp -p -R . "/Volumes/Backup HD/user"
dopo aver fatto il login nell’account di “user”. Il primo comando crea la cartella “user” sul disco USB, il secondo assicura di essere posizionati nella home dell’utente e l’ultimo comando esegue la copia di tutti i file di “user” sul disco USB preservando i permessi di accesso (cioè la possibilità degli utenti del sistema di leggere, modificare od eseguire ciascun file) e gli attributi di ciascun file (ad esempio il proprietario del file o la data di ultimo accesso).
Ho ripetuto questa sequenza dei comandi per ciascun utente del sistema (avrei anche potuto usare sudo
ma non entriamo in troppi dettagli inutili).
Infine ho installato e configurato OS X 10.9 sul disco SSD ed ho eseguito il trasferimento delle cartelle descritto più sopra.
Credetemi, è molto più complicato descriverlo di quanto lo sia in realtà.