Partiamo dal perché ho realizzato questo programma: mi ritrovo con una chiavetta USB che mi rovina i files che ci copio sopra; i files sono di tipo multimediale, quindi non particolarmente importanti e ne posso tollerare “la perdita“. Tuttavia voglio capire se è possibile localizzare una zona difettosa ed, eventualmente, isolarla al fine di continuare ad utilizzare la parte buona del dispositivo.
Come funziona:
- Partendo dal presupposto che la chiavetta è formattata con il file system VFAT (Windows), vado a creare dei file – con dimensione prestabilita, almeno 4096 byte, ma è preferibile anche qualcosa nell’ordine dei 4Mb – con un nome “progressivo” fino ad esaurimento dello spazio disponibile.
- Il contenuto dei file è anch’esso predeterminato, in modo che, leggendoli uno per uno, sia in grado di stabilire se il file è corrotto o meno.
- Nel momento in cui mi accorgo che un file risulta corrotto, lo scarto per dall’eliminazione, in modo che rimanga sul dispositivo.
Il risultato finale atteso è uno o più files che, risultando corrotti, sono rimasti sul dispositivo e mi vanno ad occupare – con un certo margine – la zona difettosa.
È chiaro che, se non rimangono file, il dispositivo è potenzialmente funzionante in modo corretto. Tuttavia bisogna notare come, cambiando la dimensione dei files che si vanno a creare, il comportamento possa cambiare, ma non solo: anche la cache del sistema operativo può influire negativamente sul test (dal secondo controllo in poi quando, presumibilmente, entra in funzione).
Empiricamente parlando, ho constatato che una dimensione ottimale risulta essere 4Mb.
Notare anche che, questo metodo di controllo, può potenzialmente funzionare su qualsiasi dispositivo di archiviazione di massa scrivibile e, volendo, qualsiasi file system (anche se, in questo caso, si ha un limite imposto dalla dimensione minima dei files che si possono creare, fissata a 4096 bytes, che potrebbe essere incompatibile con il blocco dati minimo).
Con questo sistema io ho risolto il mio problema, isolando la zona della chiavetta che risultava difettosa (diverse centinaia di Mb, su un dispositivo da 8Gb).
Ho quindi deciso di pubblicare il software, con tanto di codici sorgenti e files binari precompilati per Linux, Mac OS X e Windows.
È possibile effettuare il download da questa pagina: http://digilander.libero.it/udasoft/multiplatform.html