it-swarm.dev

Qual è la differenza tra i collegamenti rigidi NTFS e le giunzioni di directory?

Il titolo dice tutto ... qual è la differenza? Quando ne uso uno e quando uso l'altro?

Aggiunto: Nota che Punti di giunzione , Collegamenti hard e I link simbolici (soft) sono tre cose separate su NTFS.

76
Vilx-

I file di dati NTFS sono archiviati con tutti i loro attributi come "inode" con un ID e i nomi dei file puntano all'inode. Tutti i file hanno uno + hardlink. alcuni strumenti possono creare nomi extra (hardlinks) che puntano allo stesso inode, che ha un contatore del numero di nomi che puntano ad esso. Se il numero va a zero, il SO cancella il file, l'inode.

Strumenti speciali, come LN, possono creare nomi di file aggiuntivi che puntano a inode esistenti, utilizzando un nome file che punta ad essi. Nota che tutti gli attributi del file, incluse le date e le ore, sono memorizzati con l'inode, non con il nome file.

I collegamenti (extra) sono utili quando si desidera che nomi diversi puntino agli stessi dati, letti o scritti. Risparmiano spazio e sovraccarico. Tuttavia, i programmi di clobber che assumono nomi diversi puntano a dati diversi. ad esempio, se sostituisci i riferimenti a file duplicati con collegamenti fisici in un singolo file, hai rimosso qualsiasi backup che hai! Windows OS è un programma che presuppone che nomi diversi puntino a diversi gruppi 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 o così.

  • riducendo lo spazio di archiviazione dei file di dati duplicati, ad esempio, è possibile avere più backup di una partizione con più alberi di directory completi, ma con collegamenti fisici per i file che non sono stati modificati dal backup precedente.

I punti di congiunzione sono più disordinati e usano punti di reparse (che non capisco). Possono indicare diversi volumi fisici o logici ma devono trovarsi sullo stesso computer. Apparentemente possono essere utilizzati come collegamenti simbolici per le directory, consentendo un secondo nome per la stessa destinazione, ma limitato a un singolo computer, piuttosto che a un singolo volume.

Utile per ridurre le lunghezze dei percorsi o per semplificare il lavoro con diversi programmi con nomi di directory codificati.

Stessi caveat anche! Molti programmi assumono nomi diversi = file diversi.

E poi ci sono collegamenti simbolici (che possono attraversare reti), scorciatoie e PIF e .....

Anche alcune informazioni dalla stessa Microsoft :

Fondamentalmente, stanno dicendo di usare i collegamenti fisici solo per i file all'interno dello stesso volume (lettera dell'unità disco) e punti di giunzione solo per le directory sullo stesso computer (possono estendersi su diversi volumi locali).

32
tOM Trottier

Definizioni rapide:

Collegamento simbolico: Un collegamento a un file o una directory sullo stesso o diverso volume (lettera di unità) o anche su un file o una directory remota (utilizzando UNC nel suo percorso).

Hard Link: Un collegamento a un file sullo stesso volume (lettera di unità) solo. Ogni file (dati del file) ha almeno 1 hard link (nome del file). L'eliminazione di tutti gli hard link elimina in modo efficace il file.

Junction: Un collegamento a una directory sullo stesso o diverso volume (lettera di unità) ma non su una directory remota.


Dettagli:

Supponendo che stai lavorando con i volumi NTFS in Windows Vista/7 puoi utilizzare lo strumento della 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 file system che punta a un altro oggetto file system (ad esempio: file/directory).

  • MKLINK può essere utilizzato per creare collegamenti simbolici. Utilizzando il parametro /D si crea un collegamento simbolico di directory. MKLINK non controlla se il target è un file o una directory o anche se esiste il target! Ciò significa che è possibile creare collegamenti non validi come un collegamento simbolico di directory a un file o un collegamento simbolico a una directory/file non esistente.

  • I collegamenti simbolici possono essere collegamenti assoluti o relativi. I collegamenti assoluti sono collegamenti che specificano ciascuna porzione del nome del percorso, mentre i collegamenti relativi sono determinati rispetto a dove gli specificatori del collegamento relativo si trovano in un percorso specificato.

  • I collegamenti simbolici assoluti possono puntare a file/directory sullo stesso o su un diverso volume, nonché su un file o una directory remota utilizzando il percorso UNC. Tuttavia, i collegamenti simbolici relativi sono limitati a un singolo volume.

  • Sono richiesti privilegi elevati per creare un collegamento simbolico anche se, una volta creati, non sono richiesti 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 hard link (usando il parametro /H) solo di file (non di directory). Un hard link può essere creato solo da un file nello stesso volume.

  • Un file con più collegamenti fisici viene effettivamente eliminato solo quando tutti i collegamenti fisici vengono cancellati, ovvero il conteggio dei collegamenti raggiunge lo zero. Quindi, in realtà ogni file che crei ha almeno un hard link per se usi MKLINK oppure no.

  • Eventuali modifiche a tale file sono immediatamente visibili alle applicazioni che accedono tramite i collegamenti fisici che fanno riferimento ad esso. Tuttavia, la dimensione della voce della directory e le informazioni sugli attributi vengono aggiornate solo per il collegamento attraverso il quale è stata effettuata la modifica.

  • Si noti che gli attributi sul file si riflettono in ogni collegamento fisico a quel file e le modifiche agli attributi di quel file si propagano a tutti i collegamenti fisici. Ad esempio, se si deseleziona l'attributo di sola lettura su un hard link per eliminare quel particolare hard link, e ci sono più collegamenti fisici al vero file, allora sarà necessario reimpostare l'attributo di sola lettura sul file da uno dei restanti collegamenti fisici per riportare il file e tutti i restanti collegamenti rigidi allo stato di sola lettura.

Junctions : Un junction (detto anche soft link) differisce da un hard link in quanto gli oggetti di memoria a cui fa riferimento sono directory separate e un junction può collegare directory localizzate su volumi locali differenti sullo stesso computer. Altrimenti, le giunzioni funzionano in modo identico ai collegamenti fisici. Le giunzioni sono implementate attraverso punti di analisi.

  • MKLINK consente di creare un junction (usando il parametro /J) di una directory (e anche di file sebbene questo dovrebbe probabilmente essere considerato come un link non valido).

  • Un junction può essere considerato l'equivalente del collegamento fisico 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 volume.


Riferimenti:

[1] Collegamenti fisici e giunzioni: 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

[3] "directory junction" vs "directory symbolic link"?

45
moo

L'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 cancellati il ​​file è sparito.

D'altra parte, si ha un cosiddetto soft-link (junction se si tratta di una cartella o di un collegamento simbolico se si tratta di un file). In tal caso, quando elimini A.txt, il file è davvero sparito. L'eliminazione di L.txt non ha alcun effetto sul file what-ever-ever.

Gli hard link possono essere utilizzati solo sulla stessa partizione del file di origine e i soft link possono essere utilizzati tra le partizioni.

Post scriptum File e cartella sono per lo più intercambiabili per quanto riguarda NTFS.

9
Josip Medved

Hard link: funziona solo per lo stesso volume.
Junction: 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 collegamenti e collegamenti simbolici per scopi di AppCompat; per quelle applicazioni scritte male che pensano:

  • C:\Users\All Users
  • C:\Utenti\Utente predefinito

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 è vero nella cartella del profilo dell'utente, per le applicazioni che si aspettano che le cartelle di Windows XP di Windows 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         |
0
Ian Boyd