Wat is het verschil tussen softlink en hardlink in Linux?

Een symbolische of zachte link is een daadwerkelijke link naar het originele bestand, terwijl een harde link een spiegelkopie van het originele bestand is. Als u het originele bestand verwijdert, heeft de zachte link geen waarde, omdat het verwijst naar een niet-bestaand bestand.

Een harde link is slechts een extra naam voor een bestaand bestand op Linux of andere Unix-achtige besturingssystemen. Voor elk bestand kan een willekeurig aantal harde links, en dus een willekeurig aantal namen, worden gemaakt. Er kunnen ook harde koppelingen worden gemaakt naar andere harde koppelingen.

Een symbolische link, ook wel een zachte link genoemd, is een speciaal soort bestand dat naar een ander bestand verwijst, vergelijkbaar met een snelkoppeling in Windows of een Macintosh-alias. In tegenstelling tot een harde link bevat een symbolische link niet de gegevens in het doelbestand. Het verwijst eenvoudigweg naar een ander item ergens in het bestandssysteem.

De reden waarom directories hard linken is: niet toegestaan is een beetje technisch. In wezen breken ze de structuur van het bestandssysteem. Over het algemeen moet je sowieso geen harde links gebruiken. Symbolische links laten de meeste van dezelfde functionaliteit toe zonder problemen te veroorzaken (bijv. ln -s target link ).

Je kunt controleer of een bestand een symbolische link is met [ -L bestand ] . Op dezelfde manier kun je testen of een bestand een normaal bestand is met [ -f file ] , maar in dat geval wordt de controle uitgevoerd na het oplossen van symbolische links. hardlinks zijn geen type bestand, het zijn gewoon verschillende namen voor een bestand (van welk type dan ook).

Als u twee bestanden met identieke eigenschappen vindt, maar niet zeker weet of ze hard-linked zijn, gebruik de opdracht ls -i om het inodenummer te bekijken. Bestanden die hard-linked zijn, delen hetzelfde inodenummer. Het gedeelde inodenummer is 2730074, wat betekent dat deze bestanden identieke gegevens zijn.

Om de symbolische koppelingen in een directory te bekijken:

  1. Open een terminal en ga naar die map.
  2. Typ het commando: ls -la. Dit zal een lange lijst maken van alle bestanden in de map, zelfs als ze verborgen zijn.
  3. De bestanden die beginnen met l zijn uw symbolische linkbestanden.

Het koppelingscommando maakt een harde link met de naam FILE2, dat hetzelfde indexknooppunt deelt als het bestaande bestand FILE1. Omdat FILE1 en FILE2 hetzelfde indexknooppunt delen, verwijzen ze naar dezelfde gegevens op de schijf, en het wijzigen van de ene is functioneel hetzelfde als het wijzigen van de andere.

UNIX Symbolische link of Symlink Tips

  1. Gebruik ln -nfs om de softlink bij te werken. …
  2. Gebruik pwd in een combinatie van UNIX soft link om het werkelijke pad te vinden dat uw soft link aangeeft. …
  3. Om alle UNIX-softlinks en -hardlinks in een willekeurige directory te weten te komen, voert u het volgende commando uit: “ls -lrt | grep “^l” “.

Om een ​​symbolische link te verwijderen, gebruik de opdracht rm of unlink gevolgd door de naam van de symbolische link als argument. Bij het verwijderen van een symbolische link die naar een map verwijst, voeg dan geen schuine streep toe aan de naam van de symbolische link.

Harde link is de exacte replica van het daadwerkelijke bestand waarnaar het verwijst . Zowel de harde link als het gekoppelde bestand delen dezelfde inode. Als het bronbestand is verwijderd, werkt de harde link nog steeds en heb je toegang tot het bestand totdat het aantal harde links naar het bestand niet 0 (nul) is.

Like deze post? Deel het met je vrienden:
OS vandaag