Mac OS X tende a creare numerosi file per mantenere informazioni aggiuntive sulle cartelle e documenti. I cosiddetti resource fork non sono visibili dal Finder o dalle altre applicazioni, a meno che non se ne attivi forzatamente la visualizzazione dal terminale con:

defaults write com.apple.Finder AppleShowAllFiles true
killall Finder

Se si lavora solo in ambiente Mac questi non sono affatto un problema, anzi, sono utili al sistema per tenere traccia di alcune informazioni inerenti file e directory. Diventano un po' fastidiosi quando si lavora in ambienti misti, sia per le classiche pendrive ma anche per i percorsi di rete. Negli anni si sono susseguiti numerosi tool per risolvere questa problematica, pensate che uno dei primissimi articoli che ho scritto su SaggiaMente riguardava proprio uno di questi: BlueHarvest.

Nel mio lavoro ho a che fare con decine di siti web, ed oltre ai server remoti ho anche un piccolo webserver locale che uso per lo storage/backup di quei siti, nonché per testare le modifiche prima di mandarle online. Ovviamente è basato su Linux a linea di comando, in modo da limitare al minimo le esigenze del sistema operativo e sfruttare tutto per Apache+MySQL+PHP. Per semplicità accedo ai file dei siti sotto /var/www tramite la condivisione SMB, in modo da poter avere facilmente le unità montate sulla scrivania e velocizzare l'interazione con le varie app.

Questo metodo è per me irrinunciabile, poiché altrimenti sarei costretto a lavorare sempre via SFTP con conseguenti rallentamenti per il flusso lavorativo. Il problema è che in questo modo OS X crea resource fork anche sul server linux. Di norma non vediamo questi file poiché iniziano con un "." e questo li rende automaticamente nascosti nei sistemi UNIX like. Tuttavia sui server web basati su Apache si usano spesso dei file che iniziano con il punto, in particolare .htaccess, per citare il più noto, che contiene alcune direttive basilari per la configurazione del server cartella per cartella. Per questo motivo sarà necessario mantenere attiva la visualizzazione dei file nascosti nelle varie app che si utilizzano per lo sviluppo (nell'esempio seguente Panic Coda) e questo ci poterà inevitabilmente a vedere i resource fork, creando una confusione incredibile.

example

I file che iniziano con "._" sono quelli più comuni e poi ci sono anche i .DS_Store che mantengono le info sulla cartella. Dal momento che sono inutili nel web server, nonché mortalmente fastidiosi, ho predisposto un metodo per cancellarli continuamente. Per raggiungere questo risultato ho usato il classico crontab, dove si possono programmare dei comandi da eseguire con un dato intervallo di tempo. Per prima cosa si deve accedere al server remoto via SSH dal terminale del Mac:

ssh IPSERVER -l nomeutente

Dopo la conferma viene chiesta la password dell'utente identificato e ci si trova nella sua shell. Per modificare il crontab dell'utente root dovete scrivere:

sudo crontab -e

Ovviamente evitate il "sudo" iniziale se vi siete loggati direttamente con root. In fondo al documento di testo che si aprirà, dopo tutte le righe di commento che iniziano con #, si devono aggiungere le seguenti:

* * * * * find /var/www -name ._\* -exec rm -f {} \;
* * * * * find /var/www -name .DS_Store -exec rm -f {} \;

I primi cinque asterischi identificano minuto, ora, giorno, mese e settimana in cui eseguire il comando sulla destra e, così impostati, lo lanciano ogni singolo minuto. Può sembrare eccessivo ma così non li vedo praticamente neanche apparire e il carico per il server è più che minimo, direi nullo. Le due righe di comando servono per localizzare (find) tutti documenti contenuti all'interno della cartella /var/www (che è la documents root del web server) e che iniziano per ._ o si chiamano .DS_Store, eseguendo per ognuno di essi il comando rm -f, che le cancella senza far richieste.

crontab

Per salvare Ctrl+O, per uscire Ctrl+X e da quel momento il vostro web server linux sarà immune alla "spazzatura" lasciata in giro dai Mac che vi si collegano tramite SMB.