Il titolo dice tutto ... qual è la differenza? Quando ne uso uno e quando uso l'altro?
Aggiunto: si noti che i punti di giunzione , i collegamenti reali e i collegamenti simbolici (soft) sono tre elementi separati su NTFS.
Il titolo dice tutto ... qual è la differenza? Quando ne uso uno e quando uso l'altro?
Aggiunto: si noti che i punti di giunzione , i collegamenti reali e i collegamenti simbolici (soft) sono tre elementi separati su NTFS.
Risposte:
I file di dati NTFS vengono archiviati con tutti i loro attributi come "inode" con un ID e i nomi dei file puntano all'inode. Tutti i file hanno un + hardlink. alcuni strumenti possono creare nomi extra (hardlink) che puntano allo stesso inode, che ha un contatore del numero di nomi che lo puntano. Se il numero va a zero, il sistema operativo elimina il file, l'inode.
Strumenti speciali, come LN, possono creare nomi di file aggiuntivi che puntano a inode esistenti, usando un nome file che punta a loro. Si noti che tutti gli attributi del file, comprese le date e le ore, sono memorizzati con l'inode, non con il nome file.
I collegamenti extra (extra) sono utili quando si desidera che nomi diversi puntino agli stessi dati, leggano o scrivano. Risparmiano spazio e spese generali. Tuttavia, bloccano i programmi che assumono nomi diversi puntano a dati diversi. ad esempio, se sostituisci i riferimenti a file duplicati con collegamenti fissi a un singolo file, hai rimosso tutti i backup che hai! Il sistema operativo Windows è un programma che assume nomi diversi che puntano a diversi insiemi di bit.
Gli hardlink devono trovarsi sullo stesso volume fisico e logico.
Sono utili per:
riducendo la lunghezza del percorso poiché Windows supporta solo 256 caratteri circa.
riducendo lo spazio di archiviazione di file di dati duplicati, ad esempio, è possibile disporre di più backup di una partizione con più alberi di directory completi, ma con collegamenti fissi per file che non sono stati modificati rispetto al backup precedente.
I punti di giunzione sono più disordinati e usano i punti di analisi (che non capisco). Possono puntare a volumi fisici o logici diversi ma devono trovarsi sullo stesso computer. Apparentemente possono essere usati come collegamenti simbolici per le directory, consentendo un secondo nome per la stessa destinazione, ma limitato a un singolo computer, piuttosto che a un solo volume.
Utile per ridurre la lunghezza dei percorsi o semplificare il lavoro con diversi programmi con nomi di directory hardcoded.
Anche gli stessi avvertimenti! Molti programmi assumono nomi diversi = file diversi.
E poi ci sono collegamenti simbolici (che possono passare attraverso le reti), collegamenti e PIF e .....
Anche alcune informazioni dalla stessa Microsoft :
Fondamentalmente, stanno dicendo di usare i collegamenti reali solo per i file all'interno dello stesso volume (lettera dell'unità disco) e i punti di giunzione solo per le directory sullo stesso computer (possono estendersi su diversi volumi locali).
Collegamento simbolico: un collegamento a un file o una directory sullo stesso o diverso volume (lettera di unità) o persino a un file o una directory remoti (utilizzando UNC nel suo percorso).
Hard Link: solo un collegamento a un file sullo stesso volume (lettera di unità). Ogni file (dati del file) ha almeno 1 hard link (nome del file). L'eliminazione di tutti i collegamenti fisici elimina efficacemente il file.
Giunzione: un collegamento a una directory sullo stesso o diverso volume (lettera di unità) ma non a una directory remota.
Supponendo che si stia lavorando con volumi NTFS in Windows Vista / 7, è possibile utilizzare lo strumento da riga di comando MKLINK
per creare tutti e tre i tipi di collegamenti:
MKLINK [[/D] | [/H] | [/J]] Link Target /D Creates a directory symbolic link. Default is a file symbolic link. /H Creates a hard link instead of a symbolic link. /J Creates a Directory Junction. Link specifies the new symbolic link name. Target specifies the path (relative or absolute) that the new link refers to.
Collegamenti simbolici : un collegamento simbolico è un oggetto del file system che punta a un altro oggetto del file system (ad esempio: file / directory).
MKLINK
può essere utilizzato per creare collegamenti simbolici. L'uso del /D
parametro crea un collegamento simbolico alla directory. MKLINK non controlla se la destinazione è un file o una directory o anche se esiste la destinazione! Ciò significa che è possibile creare potenzialmente collegamenti non validi come un collegamento simbolico di directory a un file o un collegamento simbolico a un file / directory non esistente.
I collegamenti simbolici possono essere collegamenti assoluti o relativi. I collegamenti assoluti sono collegamenti che specificano ogni parte del nome del percorso mentre i collegamenti relativi sono determinati in relazione alla posizione in cui gli specificatori del collegamento relativo si trovano in un percorso specificato.
I collegamenti simbolici assoluti possono puntare a file / directory sullo stesso o diverso volume, nonché a un file o una directory remoti utilizzando il percorso UNC. Tuttavia, i collegamenti simbolici relativi sono limitati a un singolo volume.
Per creare un collegamento simbolico sono richiesti privilegi elevati, ma una volta creati non sono necessari privilegi elevati per eliminare il collegamento.
Hard link : un hard link è la rappresentazione del file system di un file con cui più di un percorso fa riferimento a un singolo file.
MKLINK
consente di creare collegamenti reali (utilizzando il /H
parametro) solo di file (non directory). È possibile creare un collegamento reale di un file nello stesso volume.
Un file con più collegamenti fissi viene effettivamente eliminato solo quando vengono eliminati tutti i collegamenti fissi, ovvero il conteggio dei collegamenti raggiunge lo zero. Quindi, in realtà, ogni file che crei ha almeno un collegamento reale, sia che tu lo usi MKLINK
o meno.
Qualsiasi modifica a quel file è immediatamente visibile alle applicazioni che accedono ad esso attraverso i collegamenti reali che lo fanno riferimento. Tuttavia, le dimensioni della voce della directory e le informazioni sugli attributi vengono aggiornate solo per il collegamento attraverso il quale è stata apportata la modifica.
Si noti che gli attributi sul file si riflettono in ogni collegamento reale a quel file e le modifiche agli attributi di quel file si propagano a tutti i collegamenti reali. Ad esempio, se si annulla l'impostazione dell'attributo di sola lettura su un collegamento reale per eliminare quel particolare collegamento reale e sono presenti più collegamenti fissi al file effettivo, sarà necessario reimpostare l'attributo di sola lettura sul file da uno dei rimanenti hard link per riportare il file e tutti i rimanenti hard link allo stato di sola lettura.
Giunzioni : una giunzione (anche chiamata soft link) differisce da una hard link in quanto gli oggetti di archiviazione a cui fa riferimento sono directory separate e una giunzione può collegare directory situate su diversi volumi locali sullo stesso computer. Altrimenti, le giunzioni funzionano in modo identico ai collegamenti reali. Le giunzioni sono implementate attraverso punti di analisi.
MKLINK
consente di creare una giunzione (usando il /J
parametro) di una directory (e persino di file sebbene questo dovrebbe probabilmente essere considerato come un link non valido).
Una giunzione potrebbe essere considerata l'equivalente del collegamento reale per un collegamento simbolico a una directory. Un collegamento di giunzione non può essere creato in una directory remota ma può essere creato in una directory sullo stesso / diverso volume.
Riferimenti:
[1] Collegamenti diretti e incroci: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx
[2] Creazione di collegamenti simbolici: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx
Hard link è solo un altro nome per un file. Se hai un file chiamato A.txt e hai il link L.txt, una volta eliminato A.txt, avrai comunque accesso ai suoi dati tramite L.txt. Solo quando entrambi vengono eliminati il file scompare.
D'altra parte, hai un cosiddetto soft-link (giunzione se è cartella o collegamento simbolico se è file). In tal caso, quando si elimina A.txt, il file è davvero sparito. L'eliminazione di L.txt non ha alcun effetto sul file.
I collegamenti reali possono essere utilizzati solo sulla stessa partizione del file di origine e i collegamenti diretti possono essere utilizzati tra le partizioni.
PS File e cartelle sono per lo più intercambiabili per quanto riguarda NTFS.
Hard link: funziona solo per lo stesso volume.
Giunzione: qualsiasi volume locale
Simbolico: volume locale o percorso UNC
| Link Type | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link | Yes | No | No |
| Junction | Yes | Yes | No |
| Symbolic link | Yes | Yes | Yes |
Bonus Chatter
Windows crea giunzioni e collegamenti simbolici per scopi di AppCompat; per quelle applicazioni scritte male che pensano:
sono validi
C:\Users>dir /as
Directory of C:\Users
04/11/2018 07:45 PM <SYMLINKD> All Users [C:\ProgramData]
04/11/2018 07:45 PM <JUNCTION> Default User [C:\Users\Default]
Lo stesso vale nella cartella del profilo dell'utente, per le applicazioni che prevedono che le cartelle dell'era di Windows XP esistano ancora oggi:
| Folder | Type | Target |
|------------------|------------|------------------------------------------------------------------| | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming |
| Cookies | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies |
| Local Settings | <JUNCTION> | C:\Users\Ian\AppData\Local |
| My Documents | <JUNCTION> | C:\Users\Ian\Documents |
| NetHood | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent |
| SendTo | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo |
| Start Menu | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu |
| Templates | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates |
Per rispondere a livello di programmazione:
Collegamento reale: shared_ptr <>. Ne esiste sempre uno.
Collegamento software: weak_ptr <>. Valido solo quando esiste un altro collegamento reale.