Il file system HFS+ utilizzato dai Mac ha fatto il suo tempo. Uno dei suoi problemi principali è la robustezza logica, ma gli mancano anche tutta una serie di funzionalità "moderne" che ritroviamo ad esempio in ZFS (che comunque ha già 10 anni alle spalle). Per fortuna è in arrivo il nuovo Apple File System (APFS) e promette meraviglie, ma nel frattempo mi sono scontrato con un bel problema. Alcune app su macOS (Foto, Aperture e iMovie, ad esempio) hanno la fastidiosa tendenza ad archiviare i dati in librerie monolitiche. In sostanza si tratta sempre di file e cartelle, ma il sistema operativo la considera come un pacchetto e la presenta come un unico grande file. All'inizio può sembrare una cosa carina, forse anche comoda, ma più le esigenze crescono e più ci si accorge dei grossi limiti. Ecco perché ogni utente Mac finisce per crearsi più librerie e la maggior parte di quelli con un po' di esperienza si ricordano come iPhoto Library Manager e conoscono i vecchi trucchi per ottimizzare una libreria.

move-libreria-iphoto

Altro problema che si può riscontrare è che tali librerie richiedono necessariamente l'archiviazione su dischi formattati in HFS+. Perché dico che è un problema? Basta voler archiviare una libreria su un NAS per accorgersene. Questi lavorano generalmente su altri file system (ext4, zfs, ecc...), per cui anche riuscendo a copiare tutto il pacchetto questo non funzionerebbe. Io al momento ho diverse librerie dei vecchi iPhoto, Aperture ed iMovie che non uso più da anni ma che voglio comunque salvare. Stavano su due dischi da 3TB esterni, ma avendo un NAS con un po' di spazio libero, volevo spostarle tutte lì dentro. Appurato che una semplice copia non funziona, ho iniziato a cercare metodi alternativi. Il più semplice che mi è venuto in mente è quello di incapsularle in un DMG, ma l'operazione si è rivelata fallimentare per due motivi: si perde la possibilità di modifica e Foto richiede alcuni GB liberi sul disco in cui è posizionata una libreria per poterla aprire. Per cui, nada. Ho allora pensato allo sparse bundle, seppure temevo potesse avere i medesimi limiti delle librerie essendo composto da file e cartelle. In realtà, invece, questo ha funzionato benissimo. Certo c'è qualche limitazione secondaria, ma almeno il problema lo risolve. Vediamo come procedere.

nuova-immagine-disco

Un prerequisito importante è quello di avere un disco esterno da poter usare per "travasare" i dati sul NAS, perché l'operazione può essere molto lunga via Ethernet se si possiedono librerie da centinaia di GB. Da Utility Disco bisogna creare una nuova immagine vuota (⌘N), associandogli il nome che si preferisce.

maclibraries-ext4

Come file system è necessario selezionare Mac OS esteso (journaled), ovvero HFS+, mentre il formato immagine deve essere Sparse Bundle. Non ho provato se funziona, ma a senso ho preferito evitare qualsiasi forma di codifica per accertarmi della compatibilità. Per la mappa di partizionamento ho scelto la GUID/GPT. Per quanto riguarda la dimensione del disco, considerate che il valore impostato non viene effettivamente occupato ma funge solo da tetto massimo. Si può anche espandere in futuro, volendo tenersi bassi, ma a mio avviso conviene esagerare fin dall'inizio (potete mettere anche 10 TB). Consiglio di creare l'immagine disco direttamente sull'unità esterna, così da limitare il numero di passaggi fino al NAS.

maclibraries-sparsebundle

Accertatevi ovviamente dei file systems che legge quest'ultimo e adeguate quello dell'hard disk prima di iniziare, altrimenti rischiate di sprecare ore di lavoro. La parte più lunga, infatti, sarà proprio la copia, che io ho iniziato a testare con alcune vecchie librerie per un totale di 340 GB. Dopo averle duplicate sul disco esterno, va prima smontata l'immagine sparse bundle e poi l'hard disk. A quel punto si può collegare quest'ultimo al NAS, che vedrà il tutto come una cartella.

sparsebundle-qnap

Non temete, però, in questo caso non ci sarà bisogno di strani permessi o altro del genere: basterà arrivarci da un percorso di rete e potrà essere montata regolarmente, mantenendo piena funzionalità sui contenuti. Ci sono comunque due aspetti negativi da considerare, uno scontato l'altro un po' meno. Le prestazioni non saranno elevate e si poteva immaginare: anche con un'ottima rete cablata da 1Gb/s, app come Aperture o Foto non si comportano molto bene navigando nella libreria. Non è dunque una soluzione ottimale se intendete continuare a lavorarci spesso, ma è invece utile per una catalogazione statica di vecchi contenuti, oppure anche solo per una copia di sicurezza aggiuntiva da mantenere sul NAS. Il secondo problema, invece, l'ho notato sulla mia pelle dopo qualche giorno, quando mi sono accorto di aver dimenticato una libreria di 230 GB. Se il NAS avesse potuto montare lo sparse bundle non sarebbe stato un problema, perché avrei messo la libreria aggiunta sul solito disco per poi copiarla direttamente dall'interfaccia del NAS. Ma siccome questo non è possibile e la copia via Ethernet con librerie così composte è da evitare (sono tanti piccoli file e il transfer rate sarà bassissimo, a me richiedeva settimane), rimangono solo due strade percorribili. La prima è quella di spostare nuovamente lo sparse bundle sul disco esterno dal NAS, ricollegarlo al Mac per aggiungere la libreria nuova e poi riportarlo indietro, cosa che mi è sembrata totalmente assurda oltre che lenta. La seconda è molto più pragmatica e consiste nel creare un nuovo sparse bundle ogni qual volta si debba aggiungere una libreria. Non è il massimo dell'eleganza, ma è una soluzione decisamente più rapida. Per il momento ho risolto così, ma sto ancora mantenendo le librerie originali perché non sono proprio entusiasta del sistema. Tuttavia volevo riportare la mia esperienza sperando che possa essere utile a qualcun altro. Magari insieme troviamo anche un metodo migliore.