Sono spiacente se avete raggiunto questo articolo pensando di trovare "link" a contenuti "hard". In questo pezzo non tratteremo materiale piccante, ma piuttosto una funzionalità presente in Windows Vista e successori che consente di creare collegamenti a file e cartelle presenti sulle unità di memorizzazione in modo molto più efficace rispetto al consueto Crea collegamento.
Tutti conosciamo il funzionamento dei collegamenti di Windows "classici": sono quelli piazzati sul desktop o inseriti nel menu avvio dalle nuove applicazioni installate, o che possiamo creare accedendo alla omonima voce del menu contestuale di file e cartelle.
Questi collegamenti sono piccoli file con estensione ".lnk" che contengono semplicemente un "rimando" all'oggetto puntato
Sebbene possano avere la propria utilità per raggiungere rapidamente le destinazioni più frequenti o gli applicativi dal menu avvio, hanno anche alcuni limiti significativi.
Pensate ad esempio alla circostanza in cui realizzate una copia del collegamento: cosa viene copiato? il collegamento medesimo o la destinazione puntata? e se tale operazione viene compiuta all'interno di un backup? ed eliminando il piccolo file, si rimuove il collegamento o l'oggetto a cui esso fa riferimento? e modificando i privilegi di accesso?
Come qualunque appassionato ben sa, tutte le operazioni eseguite sui collegamenti non hanno alcuna ripercussione sugli oggetti a cui questi fanno riferimento.
Fortunatamente, i file .lnk sono solo uno di molteplici tipi di collegamento realizzabili: in particolare, esistono anche altre declinazioni di collegamento, ognuna con punti di luci ed ombre.
Tutte le funzionalità illustrate di seguito (eccezion fatta per i Symbolic link) sono disponibili anche con Windows XP.
Sotto il vecchio sistema operativo Microsoft però, le cose non funzionano proprio nel modo migliore, e in rete sono stati segnalati numerosi problemi e bug a gravità variabile.
Inoltre, il comando mklink trattato di seguito non è disponibile in tale versione.
Per questi motivi, il presente articolo si concentra unicamente su Windows Vista e successivi.
Interessati? Bene, possiamo iniziare la trattazione.
Windows non consente di creare collegamenti avanzati dall'interfaccia grafica: chi volesse avvalersi di tale funzionalità, deve quindi aprire un prompt di comando amministrativo ed impartire il comando mklink seguito dagli opportuni parametri
Nelle prossime pagine, li analizzeremo singolarmente. Per il momento, notate soltando che un regolare prompt di comando non è sufficiente: se non ne utilizzate specificatamente uno amministrativo, il comando mklink ritornerà l'errore Non si dispone di privilegi sufficienti per eseguire questa operazione. al primo tentativo di creare un collegamento avanzato.
Detti anche "soft link", i link simbolici sono facilmente confondibili con i collegamenti tradizionali.
Al contrario di questi ultimi però, sono file completamente trasparenti: questo significa che, in caso un applicativo tentasse di operare su un Symlink, la richiesta di accesso verrà rediretta in modo del tutto invisibile al file di destinazione.
Al contrario, utilizzando un collegamento "classico", è necessario che l'applicazione interpreti il contenuto del file .lnk, e quindi segua il percorso indicato nel collegamento.
In altre parole, mentre i Symbolic Link vengono interpretati automaticamente dal file system, i file .lnk sono documenti tradizionali, che devono quindi essere "capiti" dall'applicazione che intende utilizzarli.
La differenza è senza dubbio sottile, ma comunque importante: il tutto diverrà più chiaro nel corso delle prove pratiche.
Per realizzarli, è necessario usare il comando mklink NomeSoftLink.estensione PercorsoDelFile
Per la mia prova ho impartito il comando mklink SoftLink.jpg "D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione\DSCN1323.JPG", realizzando di fatto un soft link sul desktop al file D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione\DSCN1323.JPG.
Il soft link viene visualizzato come un collegamento tradizionale: graficamente, questo tipo di oggetto (a sinistra, nell'immagine) non è distinguibile da un qualsiasi altro link classico realizzato utilizzando l'interfaccia grafica (sulla destra)
Piuttosto difficile ragionare invece sulle proprietà (a sinistra il soft link, al centro un collegamento lnk tradizionale, a destra il file di destinazione)
Mentre la dimensione del collegamento è di soli pochi byte, le proprietà del soft link riportano 0 byte: il comportamento è quantomeno insolito, poiché ci si aspetterebbe che venisse visualizzato o un pugno di byte, o, ancora più precisamente, la dimensione del file di destinazione.
Da notare inoltre l'attributo Tipo di file: se per il collegamento è indicato Shortcut (.lnk), per il soft link leggiamo la stessa tipologia del documento referenziato.
Al contrario di quanto avviene per il collegamento inoltre, la scheda Collegamento propone solamente campi disabilitati e non modificabili, al contrario del collegamento tradizionale
Tutte le modifiche apportate aprendo il file mediante il suo soft link si ripecutono sul documento puntato, proprio come avviene utilizzando il collegamento tradizionale.
Rinominando il collegamento viene effettivamente modificato solo il riferimento, e non il file puntato, proprio come al solito.
Una delle differenze più significative la notiamo tentando di copiare il collegamento tradizionale ed il soft link in un'altra posizione.
Mentre con il primo è semplicemente il collegamento ad essere copiato, copiando il softlink si crea di fatto una copia a sé stante del file precedentemente referenziato
Il nuovo file perde qualsiasi riferimento alla sorgente: alterando la copia, le modifiche non si riflettono in alcun modo sull'originale.
Niente da segnalare invece per lo spostamento: al contrario della copia, spostando il soft link viene spostato solamente il collegamento
La cancellazione del soft link non sortisce alcun effetto, se non quello di rimuovere l'oggetto stesso.
Il file originale rimane al proprio posto.
Il limite più stringente dei soft link? possono essere utilizzati solamente su file system NTFS: la vecchia FAT è quindi esclusa.
Per il resto, soft link come questi possono riferisi anche a file memorizzati su partizioni o dischi fissi differenti da quello su cui risiede il collegamento.
Tali percorsi possono essere locali o di rete: in questo secondo caso però, è necessario che anche l'host di destinazione monti Windows Vista o successivi.
È possibile creare anche link simbolici a directory: ne parliamo alla prossima pagina.
I Symlink possono essere riferiti sia a file, come appena visto, sia a directory.
Per quanto riguarda la maggior parte degli aspetti, il funzionamento dei soft link riferiti a cartelle ricalca quanto appena visto per i file regolari.
Per realizzare un symlink riferito ad una directory, è necessario aggiungere il parametro /D al comando visto, che diventerà quindi qualcosa del tipo mklink /D NomeDaAssegnareAlLink PercorsoCartellaDiDestinazione
Sul mio PC ho impartito mklink /D SymTest "D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione", realizzando di fatto un symlink sul desktop alla cartella di prova D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione.
Il nuovo soft link viene visualizzato come un semplice collegamento ad una cartella: non v'è modo di distinguere "a colpo d'occhio" questo tipo di oggetto (a sinistra, nell'immagine) da un qualsiasi altro collegamento realizzato nel modo tradizionale (sulla destra)
Sono invece evidenti le differenze nelle proprietà (a sinistra il symlink, al centro un collegamento .lnk tradizionale, a destra la cartella di destinazione)
Si noti in particolare che, mentre la dimensione del collegamento è di soli pochi byte, le proprietà del symlink riportano esattamente le stesse dimensioni della cartella cui fa riferimento.
Allo stesso modo, mentre il tipo di file del collegamento è segnalato come Shortcut (.lnk), per il symlink leggiamo File folder, proprio come avviene per la cartella reale.
È importante ricordare però che si tratta di un link! i file qui memorizzati infatti, non occupano alcuno spazio addizionale rispetto a quelli contenuti nella cartella di destinazione.
Interessante notare come vengono gestiti i percorsi: mentre aprendo il symbolic link ci si trova effettivamente all'interno dello stesso (d:\Zane\Desktop\SymTest, si legge nel mio caso), lanciando il file .lnk si viene semplicemente rimandati alla cartella di destinazione
Così come succede con un collegamento normale, trascinando file all'interno di un symlink a directory, il nuovo documento viene effettivamente creato nella cartella di destinazione.
Allo stesso modo, aggiungendo un file nella cartella di destinazione, questo viene immediatamente visualizzato anche all'interno di SymTest.
Modifica, rinomina e cancellazione dei file (accedendo da una qualsiasi delle due cartelle) mostrano immediatamente i propri effetti anche nell'altra directory.
Ma la differenza principale la notiamo sicuramente tentando di copiare il collegamento .lnk e il symlink in un'altra posizione.
Mentre con il primo è semplicemente il collegamento ad essere copiato, duplicando il symlink si crea una nuova cartella a sé stante contenente tutti i file di quella precedentemente referenziata
La nuova cartella perde però qualsiasi riferimento alla sorgente: modificando o cancellando i file al suo interno, le modifiche non si riflettono in alcun modo sulla directory dalla quale l'avevamo creato in origine.
Come già per la copia, spostando SymTest vengono spostati tutti i file dalla posizione originale.
Anche in questo caso, non sembra rimanere alcuna traccia del legame: il symlink diviene una cartella tradizionale a tutti gli effetti.
Interessante notare però che il symlink sul desktop rimane: è solamente il contenuto ad essere spostato.
Contrariamente a quanto ci si potesse aspettare, la cancellazione del symlink non sortisce alcun effetto, se non quello di rimuovere l'oggetto stesso.
I file contenuti nella cartella puntata rimangono inalterati.
Per il resto, valgono le stesse indicazioni fornite per i symlink a singoli file: possono essere utilizzati solamente su file system NTFS e possono referenziare anche directory memorizzate su partizioni o dischi fissi, locali o di rete, differenti da quello su cui risiede il collegamento.
I junction (letteralmente: "incrocio") altro non sono che una versione meno avanzata dei Symlink (sebbene, nonostante molte fonti sostengano il contrario, si tratti di una tipologia di oggetto ben distinta da questi ultimi).
Come tali, funzionano in tutto e per tutto come soft link, ma esibiscono i seguenti limiti:
Per realizzarli, è necessario usare il comando mklink /J NomeDaAssegnareAlJunction PercorsoDiDestinazione
Nel mio esempio test ho impartito il comando mklink /J SymTest "D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione", realizzando di fatto un junction alla cartella di prova D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione.
Non mi dilungo ulteriormente sull'argomento: il funzionamento pratico ricalca appieno quello dei symlink a directory trattati alla pagina precedente.
Gli hard link sono probabilmente il tipo di collegamento più interessante, e, allo stesso tempo, il più differente dai link tradizionali.
Per capire di cosa si tratta, si pensi al mondo con cui siamo abituati a pensare ai file su memoria di massa: ogni documento è caratterizzato da un certo nome
Ma... chi vieta di assegnare due nomi differenti allo stesso file? Se il file system sottostante è in grado di gestire tale possibilità, assolutamente nessuno! Ecco quindi che ci si ritrova in una situazione di questo tipo
In tale scenario, i dati sono raggiungibili utilizzando indistintamente uno qualsiasi dei due nomi assegnati.
Per realizzare un hard link, è sufficiente usare il comando mklink /H NomeDaAssegnareAlFile.estensione PercorsoDelFileOriginale
Sul mio PC ho impartito mklink /H MioHardLink.jpg "D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione\DSCN1323.JPG", realizzando di fatto un hard hard link sul desktop al file D:\Web\MegaLab.it\test\test_zane\Spazio di prova link\CartellaDestinazione\DSCN1323.JPG.
Il nuovo hard link viene visualizzato a tutti gli effetti come un vero e proprio file a sé stante, sprovvisto quindi della freccia ricurva che identifica i collegamenti, presente invece nel file .lnk tradizionale (catturato sulla destra)
Anche le proprietà non rivelano alcun indizio circa la natura del file
Si noti in particolare l'attributo Tipo di file e quello Dimensioni della prima e dell'ultima finestra (relative, rispettivamente, all'hard link e al file originale): sono esattamente le stesse.
Anche l'osservatore più attento potrebbe scambiare l'hard link per una semplice copia del file originale: così non è! l'hard link ed il file originale, tanto per evidenziare una differenza cruciale rispetto alla copia, occupano infatti solamente 1.16 MB, e non 2.32 MB come potrebbe sembrare.
D'altro canto, anche la shell stessa viene tratta in inganno copiando hard link e file originale all'interno di una stessa cartella!
Ma, niente paura, il file è in vero occupato una volta sola.
Per averne una riconferma, ho realizzato uno script che crea un migliaio di hard link ad uno stesso file da 800 MB all'interno di una sola cartella: la buffa situazione è che la dimensione indicata per la directory in questione (più di 800 GB), parrebbe essere superiore alla capienza complessiva del disco fisso stesso!
Ma per rendersi conto che stiamo parlando dello stesso file, è sufficiente apportare una modifica ad uno dei due, e quindi aprire l'altro per notare i medesimi cambiamenti
Nessuna ripercussione invece in caso si tentasse di rinominare uno dei due file o spostarlo di posizione: in particolare, anche muovendo la sorgente originaria, l'hard link resta comunque valido e funzionante, proprio perché, come detto in apertura, sono "i dati" ad essere referenziati, e non il singolo file originale.
Cancellando uno dei due file, l'altro file rimane comunque disponibile: come è possibile?
Il file system mantiene traccia di quanti "nomi" stanno ancora referenziando i dati in questione tramite un contatore interno, e non libera l'area di memorizzazione fino a quando questo contatore non arriva a zero.
Una volta cancellato anche il secondo file d'altro canto, lo spazio viene liberato come ci si aspettava.
Curioso notare che, cancellando il file originale, sull'hard link compare un piccolo lucchetto e ne vengono limitati i privilegi agli utenti amministratori
Contrariamente agli altri tipi di collegamento, gli hard link sono soggetti ad alcuni vincoli
Se quanto detto fino ad ora vi intriga ma non siete avvezzi alla linea di comando, niente paura: grazie ad una pratica utilty gratuita di nome Link Shell Extension è possibile portare in punta di click tutte le funzionalità relative ai collegamenti avanzati.
Una volta scaricato ed installato il programma (prestando bene attenzione ad utilizzare l'opportuna versione a 32 oppure 64 bit, ed installare preventivamente il componente Microsoft Visual C++ runtime libraries), si potrà accedere alle funzionalità offerte mediante il menu contestuale di file e cartelle.
La prima operazione da svolgere consiste nel cliccare sull'oggetto a cui si desidera realizzare un collegamento avanzato (ad esempio, una cartella) e quindi selezionare Pick Link Source
A questo punto, richiamando il menu contestuale della destinazione, sarà sufficiente espandere Drop As... per realizzare uno dei link discussi in precedenza
Oltre a quanto presentato nelle pagine precedenti, sono presenti anche:
Interessante notare che, creando un Junction, il programma sovraimprime un'icona distintiva all'oggetto (una piccola catena), facilitandone senza dubbio il riconoscimento
Allo stesso modo, è possibile agire anche su singoli file
Il menu Drop As... propone ora solo la possibilità di creare Hard link e Symlink
Gli hard link realizzati dal programma sono contraddistinti da un icona di collegamento colorata di rosso, e, fra le proprietà, viene mostrato il numero e la posizione di riferimenti all'informazione in questione (l'icona rossa viene mostrata però anche sul file originale)
L'utilità è sicuramente molto interessante: non fosse per la comodità di rendere disponibile la creazione di link avanzati in punta di click, l'icona distintiva applicata a Junction e Hard link è la vera ciliegina sulla torta.
Peccato non sia (ancora?) presente un'icona distintiva anche per i soft link, o sarebbe davvero "un must" per ogni appassionato.
I più attenti all'uso delle risorse saranno felici di sapere che Link Shell Extension non crea alcun processo attivo in background: di fatto, questo significa che l'utility non grava in alcun modo sulle risorse disponibili.
Di seguito una tabella riassuntiva dei vari tipi di collegamento
Collegamenti .lnk | Hard link | Symlink / soft link / link simbolici
|
Junction | ||
Creazione via interfaccia grafica | Sì | No | No | No | |
File system supportato | FAT/NTFS | NTFS | NTFS | NTFS | |
Riferibili a directory | Sì | No | Sì | Sì | |
Riferibili a file | Sì | Sì | Sì | No | |
Fra partizioni diverse | Sì | No | Sì | Sì | |
Riferibili ad uniità di rete | Sì | No | Sì | No | |
Su copia | Copia collegamento | Copia file | Copia file/dir | Copia file | |
Su spostamento | Sposta collegamento | Sposta collegamento | Sposta file/dir | Sposta file | |
Su cancellazione | Elimina collegamento | Elimina collegamento | Elimina collegamento | Elimina collegamento |
Ma come trarre pieno vantaggio dai link link avanzati trattati in questo articolo?
In linea di massima, ricordate che potete sfruttare questi strumenti tutte le volte che desiderate disporre di un file o una cartella in una posizione differente da quella in cui risiede, avendo la certezza che qualsiasi operazione di copia o spostamento che doveste apportare al collegamento verrebbe automaticamente propagata sui file originali.
Una prima idea potrebbe essere quella di spostare un'applicazione già installata su un altro disco fisso senza bisogno di reinstallare: ne parlo nell'articolo "Spostare le applicazioni senza reinstallare, grazie ai symlink".
Un secondo spunto per l'utilizzo dei collegamenti avanzati? salvare in una cartella fuori dai piedi un hard link a tutti i file più importanti: questo vi metterebbe al sicuro da eventuali cancellazioni accidentali dei file, pur senza costringervi a pianificare un backup ed avendo la sicurezza che il link farebbe riferimento sempre all'ultima versione delle informazioni. Attenzione, però: tale pratica mette al riparo solo dalla cancellazione, non da eventuali modifiche distruttive!
Sempre in tema di backup, potrebbe essere comodo raggruppare in una sola cartella i symlink a tutti i file e le cartelle da proteggere, e quindi configurare l'applicativo di backup per salvare tutto e solo il contenuto di tale directory.
Un'altra idea potrebbe essere quella di sfruttare i link simbolici per creare una voce all'interno del menu start in grado di rendere disponibili immediatamente tutti i file presenti in una determinata cartella: l'operazione è dettagliata in "Creare una cartella dinamica nel menu start".
Avete altre idee? Condividetele utilizzando i commenti.
Sebbene i collegamenti avanzati descritti fino ad ora siano stati presentati nel contesto del sistema operativo Windows, non sono affatto una tecnologia inventata da Microsoft: nel mondo UNIX sono presenti fin dagli albori, nei primi anni ottanta.
Tutti gli strumenti funzionano grossomodo come le proprie controparti Windows: quello che cambia è solamente il modo di creare il collegamento.
Il comando da impartire da shell è ln -s CartellaOFileDiDestinazione NomeDelSymlink.
Lo stesso strumento è disponibile anche utilizzando Cygwin.
I Junction sono oggetti presenti solamente nel mondo Windows.
Come già detto, tali oggetti sono comunque versioni meno flessibili dei Link simbolici a directory: gli interessati dovranno quindi utilizzare tali costrutti quando si trovano ad operare sotto UNIX/Linux.
Il comando da impartire da shell è ln CartellaOFileDiDestinazione NomeDelSymlink. In altre parole, ln, visto anche in precedenza, crea un hard link per impostazione predefinita.
Utilizzando ls -l è possibile visualizzare il numero di riferimenti ai dati presenti nella cartella corrente.
Tali possibilità sono fedelmente ricreate anche all'interno dell'ambiente Cygwin.
MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .
Copyright 2008 MegaLab.it - Tutti i diritti sono riservati