Per chiarire la differenza tra i due tipi di collegamento possiamo fare un'esempio pratico: provando a copiare un link tradizionale con estensione .lnk su una pendrive, verrà copiato il collegamento stesso e non il file puntato. Ciò avviene in quanto, come precedentemente accennato, i collegamenti .lnk sono riconosciuti solo a livello di shell ma non dal file system sottostante. Eseguendo la stessa operazione con un collegamento simbolico verrà, invece, copiato il file puntato e non il suo puntatore.
La possibilità di creare link simbolici è stata introdotta nel file system NTFS a partire da Windows 2000 tuttavia l'utility linkd.exe necessaria per la creazione di questo tipo di collegamenti non veniva fornita insieme al sistema operativo ma era necessario procurarsi il Resource Kit; inoltre era possibile creare link simbolici solo alle cartelle e non ai file.
Da Windows Vista in poi, l'utility a riga di comando per la creazione dei collegamenti simbolici è stata integrata all'interno del sistema operativo e prende il nome di mklink. Anche il sistema operativo fa uso dei collegamenti simbolici come ad es. le cartelle Programmi e Documents and Settings utilizzate nelle recenti versioni di Windows.
Per visualizzare i collegamenti simbolici presenti all'interno di una cartella basta utilizzare il comando
dir /al
FIG 1 - Collegamenti simbolici utilizzati da Windows |
Come si può notare dalla FIG 1, nella root del disco di sistema sono presenti 2 collegamenti simbolici (di tipo junction): Documents and settings che punta alla cartella c:\Users e Programmi che punta alla cartella C:\Program Files. I collegamenti simbolici possono essere di tipo:
- JUNCTION nel caso di giunzioni;
- SYMLINK nel caso di collegamento simbolico a file;
- SYMLINKD nel caso di collegamento simbolico a directory.
La creazione di link e junction in ambiente Windows non è molto diffusa, probabilmente perché è necessario agire tramite riga di comando e non tramite GUI (a meno che non si utilizzano programmi di terze parti). La creazione di link simbolici avviene tramite il comando mklink eseguito dal prompt dei comandi come amministratore.
La sintassi del comando mklink è molto semplice:
MKLINK [[/D] | [/H] | [/J]] Collegamento Destinazione
/D Crea un collegamento simbolico a una directory. L'impostazione predefinita è il collegamento simbolico a un file.
/H Crea un collegamento reale anziché un collegamento simbolico.
/J Crea una giunzione di directory.
Collegamento specifica il nome del nuovo collegamento simbolico.
Destinazione specifica il percorso (relativo o assoluto) a cui fa riferimento il nuovo collegamento.
Come è possibile notare dalla sintassi del comando esistono diversi tipi di link: collegamento simbolico, collegamento reale e junction (giunzione).
I collegamenti simbolici e le giunzioni vengono anche chiamati Soft Link mentre i collegamenti Reali sono chiamati Hard Link.
Soft Link
I Soft Link consentono di linkare file e cartelle presenti sullo stesso volume o su volumi diversi. Le differenze sostanziali tra collegamenti simbolici e giunzioni sono:
- I collegamenti simbolici possono essere creati anche per i file oltre che per le cartelle mentre le giunzioni sono possibili solo per le cartelle;
- I collegamenti simbolici utilizzano sia percorsi relativi che assoluti mentre le giunzioni lavorano esclusivamente con i percorsi assoluti.
Hard Link
Gli Hard Link sono associazioni N:1 tra un nome del file e i dati che esso contiene. Questo tipo di collegamenti consente di creare più nomi di file che puntano allo stesso oggetto dati sul disco. Ogni oggetto dati ha al suo interno un contatore di quanti file fanno riferimento ad esso. L'oggetto dati verrà rimosso solo quando tutti i riferimenti verranno eliminati.
Ad es.
Creando un Hard Link al file notepad.exe questo verrà visualizzato come fosse un file eseguibile a se stante. Cancellando il file eseguibile originale, notepad.exe, l'Hard Link continuerà a funzionare.
Alcuni esempi:
Esempio 1
MKLINK "Collegamento Immagine" c:\immagine.jpg
Crea un collegamento chiamato Collegamento Immagine al file c:\immagine.jpg
Esempio 2
MKLINK /D "Collegamento Temp" c:\temp
Crea un collegamento chiamato Collegamento Temp alla cartella c:\temp. Come si evince dal comando, per creare il collegamento ad una cartella è necessario specificare l'argomento /D.
Esempio 3
MKLINK /H "NotePad HL.exe" Notepad.exe
L'argomento /H permette di creare un collegamento reale (Hard Link): un nuovo puntatore al file che ha lo stesso valore del percorso originale. Un Hard Link deve risiedere sullo stesso volume del file originale ed è possibile creare più Hard Link ad uno stesso file. Ogni file è collegato almeno ad un Hard Link che è il percorso originale. L'Hard Link continuerà ad esistere e a funzionare anche se il file originale viene cancellato.
Esempio 4
MKLINK /J d:\Cartella1 c:\temp
Con l'argomento /J è possibile creare una junction (o giunzione), ossia un collegamento ad una cartella che può essere memorizzato anche su un volume diverso.
FIG 2 - MKLINK, Creazione collegamenti simbolici e collegamenti reali |
FIG 3 - Visualizzazione collegamenti simbolici |