<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hardlink on Simon Žekar — unix, communications, stupidities</title><link>https://simon.zekar.com/tags/hardlink/</link><description>Recent content in Hardlink on Simon Žekar — unix, communications, stupidities</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 21 Aug 2007 00:35:16 +0000</lastBuildDate><atom:link href="https://simon.zekar.com/tags/hardlink/index.xml" rel="self" type="application/rss+xml"/><item><title>trda povezava ? hardlink !</title><link>https://simon.zekar.com/2007/08/21/trda-povezava-hardlink/</link><pubDate>Tue, 21 Aug 2007 00:35:16 +0000</pubDate><guid>https://simon.zekar.com/2007/08/21/trda-povezava-hardlink/</guid><description>&lt;p>Počitnice… pa malo lenobe, pa malo gužve, pa je nastala takšna luknja med objavami…&lt;/p>
&lt;p>Je &lt;a href="http://wicked.si/">Vini&lt;/a>, medtem ko sva reševala svet s hardlinki navrgel pobudo za današnji post.&lt;/p>
&lt;p>Torej hardlink na unix datotečnih sistemih, veliko uporabljen, malo poznan, veliko manj kot njegov primitivni sorodnik symlink.&lt;/p>
&lt;p>Nekako takole gre: na datotečnem sistemu ima vsaka datoteka svoj unikatni id, reče se mu “inode”.&lt;/p>
&lt;p>Direktorijska struktura datotek je tabela, ki ima vnose (imena datotek), ki so kazalci na id-je datotek, torej inode. Ko se mi sprehajamo po tej strukturi datotek in zahtevamo datoteko, sistem preveri v tabeli kateri inode je pod datotečnim imenom, ga poišče po tej številki in servira.&lt;/p>
&lt;p>Hardlink je možnost, da v direktorijski strukturi kažeta dve imeni datotek na isti id datoteke / inode.&lt;/p>
&lt;p>V praksi:&lt;/p>
&lt;pre tabindex="0">&lt;code># vpišemo vrstico &amp;#34;vsebina&amp;#34; v novo datoteko
:~/test simon$ echo vsebina &amp;gt;datoteka
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># pregledamo vsebino datoteke
:~/test simon$ cat datoteka
vsebina
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># pregledamo vsebino direktorija
:~/test simon$ ls -al
total 8
drwxr-xr-x 3 simon simon 102 Aug 20 23:53 .
drwxr-xr-x 44 simon simon 1496 Aug 20 23:52 ..
-rw-r--r-- 1 simon simon 8 Aug 20 23:53 datoteka
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># naredimo hardlink datoteke &amp;#34;datoteka&amp;#34; v novo ime &amp;#34;hardlink&amp;#34;
:~/test simon$ ln datoteka hardlink
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># pregledamo vsebino direktorija
:~/test simon$ ls -al
total 16
drwxr-xr-x 4 simon simon 136 Aug 20 23:53 .
drwxr-xr-x 44 simon simon 1496 Aug 20 23:52 ..
-rw-r--r-- 2 simon simon 8 Aug 20 23:53 datoteka
-rw-r--r-- 2 simon simon 8 Aug 20 23:53 hardlink
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># pregledamo vsebino datoteke hardlink
:~/test simon$ cat hardlink
vsebina
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># zapišemo vrtico &amp;#34;novavsebina&amp;#34; v datoteko hardlink
:~/test simon$ echo novavsebina &amp;gt;hardlink
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># jasno se s tem spremeni vsebina druge
:~/test simon$ cat datoteka
novavsebina
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># pa še način, da vidimo da datotečna imena kažeta na isti &amp;#34;id datoteke / inode&amp;#34; - prva kolona
:~/test simon$ ls -li
1082466 -rw-r--r-- 2 simon simon 12 Aug 21 00:01 datoteka
1082466 -rw-r--r-- 2 simon simon 12 Aug 21 00:01 hardlink
&lt;/code>&lt;/pre>&lt;p>Zakonitosti hardlinkov:&lt;/p>
&lt;ul>
&lt;li>hardlink-ate lahko samo datoteke,&lt;/li>
&lt;li>hardlink do datoteke lahko postavite samo na isti datotečni sistem (na enak mountpoint), linkanje med diski torej ni mogoče,&lt;/li>
&lt;li>vsebina datoteke bo iz diska izbrisana takrat, ko nanjo ne bo kazal več nobeden link. Torej ko zbrišete kateregakoli izmed dveh datotek, bo vsebina še vedno v drugi datoteki,&lt;/li>
&lt;li>število hardlinkov datoteke lahko vidite v drugi koloni ukaza ls (bodite pozorni na primer zgoraj, ko je bila ena datoteka je bilo število hardlinkov 1, nato 2).&lt;/li>
&lt;/ul>
&lt;p>Uporabnost ? povsod kjer se enake datoteke pojavljajo v različnih direktorijih&lt;/p>
&lt;ul>
&lt;li>pri sistemskih datotekah virtualnih okolij “jail na FreeBSD”, kjer ima vsak jail kopijo celotnega sistema,&lt;/li>
&lt;li>varnostnih kopijah, pri čemer imamo lahko za vsak dan celotno direktorijsko strukturo strežnika, zares pa bo ena datoteka zasedla samo enkratno velikost.&lt;/li>
&lt;li>blackbox programi, programi ki znajo opravljati već funkcij, glede na to kakšno ime smo jim dali. (primer /rescue na FreeBSD)&lt;/li>
&lt;li>razno 🙂&lt;/li>
&lt;/ul>
&lt;p>Pa primitivni bratec symlink ?&lt;/p>
&lt;p>Symlink pa pod datotečno ime zapiše pot do datoteke, na katero kaže, torej samo tekstovni opis kje najdemo datoteko.&lt;/p>
&lt;p>Zakonitosti symlinka:&lt;/p>
&lt;ul>
&lt;li>symlink-ate lahko direktorije in datoteke,&lt;/li>
&lt;li>symlink lahko uporabljate med večimi diski / mount pointi,&lt;/li>
&lt;li>symlink se ne ozira na to, če datoteka na katero kaze obstaja ali ne,&lt;/li>
&lt;li>datoteka bo iz diska odstranjena, ko odstranimo original, torej datoteko na katero kažejo ostali symlinki.&lt;/li>
&lt;/ul>
&lt;p>Kaj uporabiti ? Seveda odvisno od primera, če želite samo malo organizirati datotečno strukturo in imeti ene stvari “pri roki”, bližje, potem symlink.&lt;/p>
&lt;p>So pa stvari ki jih symlink ne zna, kot recimo če želite datoteko ki se nahaja v direktoriju do katerega uporabnik načeloma nima dostopa, deliti z njim, potem narediti hardlink v uporabniku viden prostor.&lt;/p>
&lt;p>Ko želite, da se dodoteke obnašajo kot datoteke, ko jih želite sinhronizirat z rsyncom itd.&lt;/p>
&lt;p>Z Vinijem sva namreč imela primer, pri katerem sva imela organizacijo datotečnih imen po nekem svojem ključu, ki pa, jasno, naročniku ni bil povšeči 🙂 Rešil je hardlinking, dve popolnoma drugačni ureditvi datotečnih imen, pod njima pa enake datoteke.&lt;/p>
&lt;p>Toliko da prelomim ta molk,&lt;br>
kmalu več, noč,&lt;br>
s.&lt;/p></description></item></channel></rss>