Portál AbcLinuxu, 16. srpna 2025 11:27


Dotaz: Jak udělat hardlink na adresář ?

29.8.2004 14:37 iksfs
Jak udělat hardlink na adresář ?
Přečteno: 786×
Odpovědět | Admin
DD Když se snažím vytvořit pevný link na adresář pomocí ln -F tak dostanu odpověď: Operace není povolena Dělám to jako root a v man ln se píše:

-d, -F, --directory Allow the super-user to make hard links to directories.

Proč to tedy nejde ?
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.8.2004 14:49 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Taky se v manu pise, ze to nemusi byt vubec implementovano.
29.8.2004 15:57 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ta hláška je stará. Prostě to nejde vůbec, už se to tu párkát řešilo. Taky jsem někde četl důvod, proč to natrvrdo zakázali, ale už nevím kde. Můžeš zeditovat zdrojáky jádra, tu podmínku zrušit (lze ji celkem snadno najít), a pak třeba ten důvod zjistíš ;-)
29.8.2004 19:12 Martin Čížek | skóre: 20 | Praha
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
No to je celkem jednoduché: Vedlo by to k nekonzistenci souborového systému. Na i-node adresáře standardně existují tyto (hard)linky:
1. jméno adresáře v nadřazeném adresáři
2. . (tečka) z daného adresáře
3. .. (dvě tečky) z každého podadresáře
No a právě v bodu 3. je problém. Odkaz '..' by pak nutně nevedl do nadřazeného adresáře a narozdíl od symlinků by to bylo těžko detekovatelné.
Kdyby dva z nás byli dvěma z nich, všichni z nás by mohli být všemi z nich.
31.8.2004 01:06 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
Mno ... shodou okolností jsem narazil na http://kerneltrap.org/node/view/3749
29.8.2004 20:39 Martin
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hardlink na adresář skutečně nelze udělat. Ale někdy lze téhož dosáhnout pomocí bind-mount:
mount adresář1 adresář2 -o bind
30.8.2004 10:49 iksfs
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
Díky to je pro mě užiteční informace.
Stanislav Brabec avatar 31.8.2004 12:29 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
Na běžícím systému je bind mount ideální.

Na svých stránkách mám neště jedno řešení hardlinku adresářů (mkcd - používal jsem ho při vytváření CD s linky čitelnými i ve Windows) - jde o rekurzivní nalinkování obsahu podadresářů - soubory se nalinkují, do adresářů se provede rekurze.

ftp://ftp.penguin.cz/pub/users/utx/mkcd/ Skript mkhardlinks musíte trochu vyeditovat.

Funguje to tak, že vyrobíte symlinky, pustíte skript a on to "přehardlinkuje".
31.8.2004 13:11 Martin Čížek | skóre: 20 | Praha
Rozbalit Rozbalit vše Re: Jak udělat hardlink na adresář ?
K bind mountu bych měl poznámku:

V standardním jádru u něj nefunguje volba ro (resp. nemá žádný efekt). Když jsem viděl použití bind mountu s ro v Prilelomu 22, přišlo mi to jako skvělé řešení, bohužel ale zápisu _nebrání_.

Řešení spočívá v použití patche "bind mount extensions", který ro bind mount umožnuje. Nemáte s ním někdo zkušenosti? (spolehlivost, ...)
Kdyby dva z nás byli dvěma z nich, všichni z nás by mohli být všemi z nich.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.