Qual è la differenza tra un link soft (simbolico) e un link hard?


59

Ho sentito che ora puoi creare collegamenti soft anche in Vista . Quindi, qual è la differenza tra un collegamento soft (simbolico) e un collegamento reale su UNIX / Linux / Vista?

Ci sono vantaggi nell'usare l'uno rispetto all'altro? O servono solo a due scopi distinti?


In termini pratici, la risposta è che quasi sempre si desidera utilizzare un collegamento simbolico. La mia comprensione è che i collegamenti reali servono principalmente per preservare lo spazio, specialmente in cose come istantanee e backup incrementali, dove le istantanee successive hanno molti file identici che difficilmente cambieranno in futuro.
Ryan Thompson,

Questo dovrebbe essere migrato su Unix e Linux? Vedi unix.stackexchange.com/questions/9575/…
ripper234

2
No, non dovrebbe essere migrato. Poiché la domanda originale non è specifica solo per Unix: Windows supporta collegamenti hardware e software.
Richard West,

1
alcune applicazioni si romperanno (e talvolta male) se si utilizza un collegamento software, in particolare per le directory: il collegamento software verrà dereferenziato, e quando lo è e l'applicazione viene confrontata, diciamo /var/opt/log/appname(la sua configurazione) con il valore dedotto, diciamo /apps/appname/logs, si lamenterà questa non è una partita. La soluzione per questo è usare un mount --bind(su Linux) per rimontare la directory originale nella nuova posizione.
Warren,

1
Solo per chiarire un paio di punti inclusi in altre risposte ... Windows può creare hardlink (anche se credo che si comportino in modo leggermente diverso rispetto a Unix). Dai un'occhiata al comando mklink e all'argomento h. (Se digiti mklink nella riga di comando, vedrai il file della guida che include la sintassi di base.)

Risposte:


68

Un hard link tradizionalmente condivide le stesse strutture del file system (inode in unixspeak), mentre un soft-link è un reindirizzamento del percorso.

  • Gli hardlink devono trovarsi sullo stesso filesystem, i softlink possono attraversare i filesystem.
  • I file con collegamento fisso rimangono collegati anche se si sposta uno di essi (a meno che non si sposti uno su un altro file system attivando il meccanismo di copia ed eliminazione). I file con collegamento software si interrompono se si sposta la destinazione (originale) e talvolta quando si sposta il collegamento (è stato utilizzato un percorso assoluto o relativo? È ancora valido?).
  • I file hardlinked sono uguali, mentre l'originale è speciale nei softlink e l'eliminazione dell'originale elimina i dati. I dati non scompaiono fino a quando non vengono eliminati tutti gli hardlink.
  • I softlink possono puntare a qualsiasi target, ma la maggior parte dei sistemi operativi / filesystem non consente le directory hardlinking per impedire cicli nel grafico del filesystem (ad eccezione delle voci .e ..nelle directory unix che sono hard link).
  • I softlink possono richiedere un supporto speciale dagli strumenti per camminare sul filesystem. Leggi su readlink (2) .

(Alcuni dettagli mi vengono in mente da mat1t . Grazie.)


Bel riassunto. Ogni utente Linux dovrebbe saperlo (anche se i collegamenti fisici sono molto rari).
Artem Russakovskii,

La risposta di dmckee ha i dettagli sulla semantica praticamente esatti. L'unico dettaglio che aggiungerei è una spiegazione di ciò che accade a un livello superiore: un soft link è un file a sé stante, mentre un hard link è una voce di directory che punta a dati esistenti. Wikipedia ha maggiori dettagli sui collegamenti hard e soft .
Mr. Shiny e New 安 宇

bello riassumere, molto utile
Razique

9
Va inoltre notato che i collegamenti fisici condividono le autorizzazioni e le informazioni sulla proprietà.
Corey S.

6
Si prega di aggiungere che 2 hardlink vengono creati automaticamente con il nome. e .. ogni volta che crei una cartella. In Linux questi sono gli unici hardlink validi per una cartella.
Mircea Vutcovici,

10

Il riassunto è che un collegamento simbolico / breve funge da collegamento alla posizione del primo file, mentre un collegamento fisico è un collegamento al file sul disco.

Se si elimina la destinazione di un collegamento software, il collegamento software cesserà di funzionare, ma se si elimina una copia di un collegamento reale, il file rimarrà sul disco fino a quando non verranno rimossi tutti i collegamenti fisici. In effetti tutti i nomi dei file sono hardlink al file sul disco.

Ci sono anche alcune restrizioni, ad esempio non penso che tu possa creare collegamenti concreti di cartelle, ma puoi crearne dei collegamenti. I soft link possono anche puntare a file / cartelle su unità e partizioni diverse, mentre i hard link no.


-1

Il sistema MS Windows utilizza sempre collegamenti software (collegamenti). Cioè, il collegamento agisce semplicemente come un collegamento che punta al percorso del file. Se la posizione dell'originale viene spostata, il collegamento si interrompe. Inoltre, ciò che si fa sul collegamento (come la modifica delle autorizzazioni o la modifica del nome del collegamento) non influisce sul file effettivo.

Quindi la domanda è iniziata con un presupposto errato. Sì, Vista utilizza i softlink, ma non è una novità, vale a dire un collegamento MS.


3
No, NTFS supporta hardlink e ha da NTFS 3.1 (la versione corrente da XP / 2003).
Chris S,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.