Vraag Wat is het verschil tussen een zachte (symbolische) link en een harde link?


Ik hoor dat je het nu kunt doen maak ook zachte links in Vista. Dus, wat is het verschil tussen een zachte (symbolische) link en een harde link op UNIX / Linux / Vista?

Zijn er voordelen van het gebruik van de ene boven de andere? Of dienen ze slechts twee verschillende doelen?


55
2018-05-20 20:58


oorsprong


In praktische termen is het antwoord dat je bijna altijd een symbolische link wilt gebruiken. Ik ben van mening dat harde koppelingen meestal bestaan ​​uit het behoud van de ruimte, met name in zaken als snapshots en incrementele back-ups, waarbij opeenvolgende snapshots veel identieke bestanden hebben die in de toekomst waarschijnlijk niet zullen veranderen. - Ryan Thompson
Moet dit worden gemigreerd naar Unix & Linux? Zien unix.stackexchange.com/questions/9575/... - ripper234
Nee, het moet niet worden gemigreerd. Omdat de oorspronkelijke vraag niet alleen specifiek is voor Unix - Windows ondersteunt harde en zachte links. - Richard West
sommige applicaties zullen breken (en soms slecht) als u een zachte link gebruikt - met name voor mappen: de softlink zal dereferenced worden, en wanneer het is en de toepassing vergelijkt, zeg dan /var/opt/log/appname (zijn config) met de dereferenced waarde, zeg /apps/appname/logs, het zal klagen dat het geen match is. De oplossing hiervoor is om een mount --bind (onder Linux) om de oorspronkelijke map opnieuw te koppelen aan de nieuwe locatie. - warren
Gewoon om een ​​paar punten op te ruimen die zijn opgenomen in andere antwoorden ... Windows kan hardlinks maken (hoewel ik denk dat ze zich iets anders gedragen dan in Unix). Bekijk de mklink-opdracht en het h-argument. (Als u mklink in de opdrachtregel typt, ziet u het Help-bestand met de basissyntaxis.)


antwoorden:


Een harde koppeling deelt traditioneel dezelfde structuren van het bestandssysteem (inode in unixspeak), terwijl een softlink een padnaamomleiding is.

  • Hardlinks moeten zich op hetzelfde bestandssysteem bevinden, softlinks kunnen bestandssystemen doorkruisen.
  • Hardgekoppelde bestanden blijven gekoppeld, zelfs als u een van beide verplaatst (tenzij u het ene naar het andere bestandssysteem verplaatst, waarbij het mechanisme voor kopiëren en verwijderen wordt geactiveerd). Softlink-bestanden breken als u het doelwit verplaatst (origineel) en soms als u de koppeling verplaatst (Hebt u een absoluut of relatief pad gebruikt? Is het nog steeds geldig?).
  • Hardgekoppelde bestanden zijn gelijk aan elkaar, terwijl het origineel speciaal is in softlinks en het verwijderen van het origineel de gegevens verwijdert. De gegevens verdwijnen pas op de dag van vandaag allemaal hardlinks worden verwijderd.
  • Softlinks kunnen wijzen ieder doel, maar de meeste OS / bestandssystemen verbieden hardlinkende mappen om cycli in de bestandssysteemgrafiek te voorkomen (met uitzondering van de . en .. ingangen in unix-directory's die harde koppelingen zijn).
  • Softlinks kunnen speciale ondersteuning van de loophulpmiddelen van het bestandssysteem vereisen. Lees verder leeslink (2).

(Enkele details die in herinnering zijn gebracht door mat1t. Bedankt.)


66
2018-05-20 21:12



Mooie samenvatting. Elke Linux-gebruiker zou dit moeten weten (hoewel harde links zeer zeldzaam zijn). - Artem Russakovskii
Het antwoord van dmckee heeft de details over de semantiek vrijwel exact. Het enige detail dat ik zou toevoegen, is een uitleg van wat er op een hoger niveau gebeurt: een softlink is een bestand op zichzelf, terwijl een hardlink een directoryvermelding is die verwijst naar bestaande gegevens. Wikipedia heeft meer details over hard en zacht koppelingen. - Mr. Shiny and New 安宇
mooie samenvatting, erg handig - Razique
Er moet ook worden opgemerkt dat harde koppelingen zowel machtigingen als eigendomsinformatie delen. - Corey S.
Voeg alsjeblieft toe dat er 2 hardlinks worden aangemaakt met de naam. en .. elke keer dat u een map maakt. In Linux zijn dat de enige geldige hardlinks naar een map. - Mircea Vutcovici


De samenvatting is dat een symbolische / korte link fungeert als een snelkoppeling naar de locatie van het eerste bestand, terwijl een hardlink een snelkoppeling naar het bestand op de schijf is.

Als u het doelwit van een softlink verwijdert, werkt de softlink niet meer, maar als u een kopie van een harde koppeling verwijdert, blijft het bestand op de schijf staan ​​totdat alle harde koppelingen ernaar zijn verwijderd. In feite zijn alle bestandsnamen hardlinks naar het bestand op de schijf.

Er zijn ook bepaalde beperkingen, ik denk bijvoorbeeld niet dat je harde links van mappen kunt maken, maar je kunt er zachte links van maken. Softlinks kunnen ook verwijzen naar bestanden / mappen op verschillende stations en partities, terwijl harde links dat niet kunnen.


10
2018-05-20 21:12





Het MS Windows-systeem gebruikt altijd zachte links (snelkoppelingen). Dat wil zeggen, de koppeling fungeert eenvoudigweg als een snelkoppeling naar de bestandslocatie. Als de locatie van het origineel wordt verplaatst, breekt de koppeling. Bovendien heeft wat u met de snelkoppeling doet (zoals het wijzigen van rechten of het wijzigen van de naam van de snelkoppeling) geen invloed op het eigenlijke bestand.

Dus de vraag begon met een verkeerde veronderstelling. Ja, Vista gebruikt softlinks, maar het is niet nieuw, dat is een MS-snelkoppeling.


-1
2018-04-18 18:20



Nee, NTFS ondersteunt hardlinks en heeft sinds NTFS 3.1 (de huidige versie sinds XP / 2003). - Chris S