NTFS, trucchi e segreti del file system più usato con Windows

Alcuni aspetti poco noti legati al funzionamento del noto file system NTFS, utilizzatissimo in ambiente Windows.
NTFS, trucchi e segreti del file system più usato con Windows

In Windows il file system NTFS è responsabile della gestione dei file, delle cartelle e dello spazio su disco. Non esiste ovviamente solo il file system NTFS tanto che nell’articolo abbiamo presentato le principali alternative (Differenza tra FAT e NTFS. Cos’è exFAT?) ma è proprio il New Technology File System – e non più tanto “nuovo” ormai visto che è stato ideato da Microsoft nel lontano 1993 – che ancora oggi è il più utilizzato in assoluto in ambiente Windows.
Il suo successore viene un po’ considerato ReFS (ne abbiamo parlato ReFS, cos’è e come funziona il nuovo file system Microsoft) ma NTFS continua a rimanere la scelta preferita nella maggior parte dei casi.

Si parla di file system che in futuro potrebbero prenderne il posto ma ancora oggi in molti non sono consapevoli delle funzionalità avanzate (e nascoste) di NTFS.
Il file system NTFS, infatti, permette di memorizzare e recuperare successivamente “dati nascosti” (detti Alternate Data Stream), risparmiare spazio di archiviazione quando necessario, salvare un file in maniera tale che sembri conservato in più di una cartella e molto altro ancora.

Alternate Data Stream (ADS)

Gli ADS sono informazioni aggiuntive, nascoste, che possono essere specificate come attributo addizionale di un qualunque file. Gli ADS si portano dietro una nomea non proprio incoraggiante perché vengono spesso collegati con l’attività di alcuni malware. Soprattutto in passato, infatti, alcuni componenti dannosi usavano nascondere informazioni necessarie per il loro funzionamento utilizzando proprio gli ADS.
Le principali soluzioni antimalware, però, nel frattempo, si sono fatti molto più furbi e sono in grado di effettuare una scansione completa del sistema esaminando anche il contenuto degli eventuali ADS.

In realtà, però, gli ADS sono utilizzati per finalità assolutamente legittime: il browser e il sistema operativo, ad esempio, annotano la provenienza dei file in modo da allertare l’utente allorquando la loro apertura potesse nascondere un’insidia.

Aprendo il prompt dei comandi con diritti di amministratore (digitare cmd nella casella di ricerca di Windows quindi premere la combinazione di tasti CTRL+MAIUSC+INVIO) e scrivendo dir /r si otterrà elenco degli ADS utilizzati nella cartella corrente.

Il comando seguente, per esempio, permetterà di ottenere una lista degli ADS utilizzati sull’intera unità C: (può essere necessario attendere diversi minuti affinché l’operazione venga completata):

dir C:\ /r /s | find ":$DATA" > %userprofile%\ads.txt && notepad %userprofile%\ads.txt

Il file ads.txt potrà poi essere eliminato dalla cartella %userprofile%.

Il nostro suggerimento è quello di portarvi ad esempio nella cartella Download di Windows, tenere premuto il tasto MAIUSC quindi cliccare con il tasto destro su un’area libera e scegliere Apri finestra PowerShell qui.

Si provi quindi a digitare cmd quindi dir /r.
Si troveranno diversi file che hanno un corrispettivo con lo stesso nome e il suffisso :Zone.Identifier:$DATA. Si tratta proprio dei file con un ADS.

Digitando ad esempio more < nomefile.zip:Zone.Identifier si leggerà il contenuto dell’ADS per il file specificato.

Come si vede, l’ADS indica non soltanto che il file è stato scaricato dalla rete Internet (l’ID 3 si riferisce appunto a Internet; vedere anche questo post) ma riporta referrer URL e indirizzo completo dal quale il file è stato scaricato.

La lettura del contenuto degli ADS può essere effettuata anche via PowerShell usando il comando Get-Content nomefile.zip -Stream Zone.Identifier.

Con Remove-Item è possibile rimuovere gli ADS. Rimuoverli alla cieca non è però affatto una buona idea: basti pensare che il client di Dropbox memorizza, ricorrendo agli ADS, informazioni di appoggio sui file sincronizzati con i suoi server cloud.

Compressione file con NTFS

Per risparmiare spazio su qualunque unità di memorizzazione, il file system NTFS può comprimere i file.
Si tratta di un comportamento completamente trasparente per le applicazioni: il sistema operativo assicura che i dati vengano compressi al bisogno e siano automaticamente ripristinati al momento dell’utilizzo da parte delle applicazioni in esecuzione.
Le applicazioni non si accorgono di nulla ma i tempi di attesa possono aumentare: le attività di compressione e decompressione dei dati costano infatti in termini di impatto sulla CPU.

Quanto spazio può essere salvato dipende dal tipo di dati: nei file di testo puro c’è ovviamente ampio spazio di manovra ma con gli archivi compressi (ad esempio .zip, .7z o .rar) oppure con le immagini JPEG non si otterranno benefici. Anzi, l’operazione potrebbe risultare controproducente.

Ad ogni modo, con il file system NTFS l’utente può fare clic con il tasto destro del mouse su una cartella contenente dati quindi cliccare su Avanzate e spuntare la casella Comprimi contenuto per risparmiare spazio su disco.

Da prompt dei comandi è possibile usare il comando compact per richiedere la compressione del contenuto di una cartella.
Digitare compact /? per ottenere la lista completa degli switch utilizzabili.

Uno stesso file può essere accessibile su un’unità NTFS con più nomi e anche in più cartelle senza occupare spazio aggiuntivo.

I cosiddetti hard link sono disponibili solo per i file (non per le cartelle) e devono sempre riferirsi a file presenti sullo stesso volume. Il meccanismo è semplice e consiste nella creazione di una nuova voce a livello di file system per un file che esiste già.

Per creare un hard link si possono usare, alternativamente, i comandi seguenti. I primi due funzionano dal normale prompt dei comandi di Windows, l’ultimo da PowerShell:

mklink /h hardlink.exe filesistente.exe
fsutil hardlink create hardlink.exe filesistente.exe
New-Item -ItemType HardLink -Name hardlink.exe -Value filesistente.exe

Nell’esempio abbiamo fatto riferimento a un ipotetico file con estensione .exe ma è ovviamente possibile riferirsi a qualunque tipo di file; inoltre, filesistente.exe è il nome del file che già esiste (con relativo percorso) mentre hardlink.exe è il nome del collegamento che si riferisce a tale file.
Va infine evidenziato che gli hard link funzionano bene solo per i file che non cambiano mai: se un’applicazione interviene su un file, ad esempio eliminandolo e poi ricreandolo, il “giochetto” non funzionerà più.

Microsoft fa un uso intensivo degli hard link durante l’installazione di Windows: molti dei file di sistema finiscono inizialmente in sottocartelle di \Windows\WinSxS e da lì vengono smistati alle cartelle di sistema vere e proprie come \Windows e \Windows\System32 proprio usando la tecnica illustrata.

I soft link o link simbolici sono un altro strumento che talvolta può tornare molto utile sui sistemi Windows. I link simbolici (detti anche symlink) possono fare riferimento sia ai file che alle cartelle. Inoltre, diversamente dagli hard link, la destinazione cui viene fatto riferimento non deve necessariamente trovarsi sulla stessa unità in cui è creato il collegamento. Inoltre, si può anche fare riferimento a risorse memorizzate su un’unità collegata in rete locale.

Link simbolici si possono creare usando i seguenti comandi:

mklink softlink.exe filesistente.exe

(link simbolico su file)

mklink /d softlink cartellaesistente

(link simbolico per le cartelle)

New-Item -ItemType SymbolicLink -Name softlink -Value risorsaesistente

(nel caso di PowerShell)

Nell’articolo Come spostare i programmi da C: a D: o ad altre unità, cui vi invitiamo a fare riferimento, abbiamo visto come usare i link simbolici per recuperare spazio prezioso sull’unità principale (dove è installato il sistema operativo) e spostare i programmi più pesanti su un volume di appoggio senza che Windows si accorga di nulla (niente errori, niente malfunzionamenti).

Gestione delle quote

Un’altra caratteristica poco conosciuta di NTFS è la possibilità di gestire le quote ovvero definire lo spazio massimo che i vari account utente configurati sulla macchina Windows in uso possono utilizzare.

Per procedere in tal senso basta premere la combinazione di tasti Windows+E, cliccare con il tasto destro del mouse su un’unità e scegliere Proprietà. Selezionando la scheda Gestione quote quindi cliccando sul pulsante Mostra impostazioni quote è possibile definire lo spazio che ciascun utente potrà al massimo impegnare.

Utilizzando le apposite spunte, si può anche chiedere a Windows di annotare nel registro degli eventi ogni volta che un utente si approcciasse alla quota definita o quando lo spazio concesso si esaurisse.

Ti consigliamo anche

Link copiato negli appunti