% Linux Installation and Getting Started    -*- TeX -*-
% links.tex
% Copyright (c) 1992, 1993 by Matt Welsh <mdw@metalab.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\section{Upravljanje s povezavami datotek}\label{sec-manage-links}
%\markboth{Učbenik Linuxa}{Upravljanje s povezavami datotek}
\index{datoteke!povezave|(}
\index{povezave|(}
\index{inode!definicija}
\index{število inode!definicija}
\index{datoteke!njih število inode}
Povezave vam omogočijo, da daste eni datoteki več kot eno ime.
Sistem navadno prepozna datoteke po njihovem \textbf{številu inode},
ki je le enoličen sistemski razpoznavni znak te datoteke.
Imenik je navadno seznam števil inode z njihovimi ustreznimi
imeni datotek.  Vsako ime datoteke v imeniku je \textbf{povezava}
(angl.\ link) do določene informacije inode.

\subsection{Trde povezave}
\index{povezave!trde}
Ukaz \texttt{ln} se uporablja za ustvarjanje več povezav do ene
datoteke.  Denimo, da imate v imeniku datoteko, imenovano
\texttt{foo}.  Z uporabo \texttt{ls -i} lahko pogledate število inode
za to datoteko.
\begin{tscreen}
/home/larry\$ \emph{ls -i foo} \\
22192 foo \\
/home/larry\$
\end{tscreen}
Tukaj ima \texttt{foo} v datotečnem sistemu prirejeno število inode 22192.
Takole lahko ustvarite še eno povezavo, po imenu \texttt{bar},
do \texttt{foo}:
\begin{tscreen}
/home/larry\$ \emph{ln foo bar}
\end{tscreen}
Z uporabo \texttt{ls -i} boste videli, da imata ti dve datoteki
isto število inode.
\begin{tscreen}
/home/larry\$ \emph{ls -i foo bar} \\
22192 bar\ \ \ 22192 foo \\
/home/larry\$
\end{tscreen}
Zdaj lahko do iste datoteke dostopate prek imena \texttt{foo}
ali pa \texttt{bar}. Če naredite spremembe v datoteki \texttt{foo}, se
te spremembe pojavijo tudi v datoteki \texttt{bar}.  Za vse namene sta
\texttt{foo} in \texttt{bar} ista datoteka.

Tovrstne povezave so znane kot \textbf{trde povezave} (angl.\ hard links),
saj ustvarijo neposredno povezavo na inode.  Upoštevajte, da lahko
trdo povežete datoteki le, če ležita na istem datotečnem sistemu;
simbolne povezave (glejte spodaj) nimajo te omejitve.

Ko pobrišete datoteko z \texttt{rm}, pravzaprav pobrišete le eno
povezavo do nje.  Če uporabite ukaz
\begin{tscreen}
/home/larry\$ \emph{rm foo}
\end{tscreen}
se pobriše le povezava, imenovana \texttt{foo}, \texttt{bar} bo še
vedno obstajala.  Datoteka je zares odstranjena s sistema le, ko ni
več povezav do nje.  Navadno imajo datoteke le po eno povezavo, zato
uporaba ukaza \texttt{rm} pobriše datoteko.  Vendar če ima datoteka
več povezav do nje, bo uporaba \texttt{rm} pobrisala le eno povezavo;
za brisanje datoteke morate pobrisati vse povezave do nje.

\index{povezave!prikaz njih števila}
Ukaz \texttt{ls -l} prikaže število povezav do datoteke (med ostalimi
informacijami).
\begin{tscreen}
/home/larry\$ \emph{ls -l foo bar} \\
\verb!-rw-r--r--   2 root     root          12 Aug  5 16:51 bar! \\
\verb!-rw-r--r--   2 root     root          12 Aug  5 16:50 foo! \\
/home/larry\$
\end{tscreen}
Drugi stolpec v izpisu, >>\texttt{2}<<, prikazuje število povezav
do datoteke.

Kot se izkaže, je imenik pravzaprav le datoteka, ki vsebuje
informacije o zvezah med povezavami in inodi.  Vsak imenik vsebuje
tudi vsaj dve trdi povezavi: >>\texttt{.}<< (povezavo, ki kaže nanj)
in >>\texttt{..}<< (povezavo, ki kaže na starševski imenik).  Povezava
>>\texttt{..}<< korenskega imenika (\texttt{/}) kaže le nazaj na
\texttt{/}.  (Z drugimi besedami, starševski imenik korenskega imenika
je sam korenski imenik.)

\subsection{Simbolne povezave}
\index{povezave!simbolne}
\textbf{Simbolne povezave} (angl.\ symbolical links, ali symlinks)
so še ena vrsta povezave, ki je drugačna od trdih povezav.  Simbolna
povezava vam omogoča določitev drugega imena, a ne poveže datoteke
z inode.

Ukaz \texttt{ln -s} ustvari simbolno povezavo do datoteke.
Na primer, če uporabljate ukaz
\begin{tscreen}
/home/larry\$ \emph{ln -s foo bar}
\end{tscreen} 
boste ustvarili simbolno povezavo, imenovano \texttt{bar}, ki kaže
na datoteko \texttt{foo}.  Če uporabite \texttt{ls -i}, boste videli,
da imata ti dve datoteki zares različni števili inode.
\begin{tscreen}
/home/larry\$ \emph{ls -i foo bar} \\
22195 bar\ \ \ 22192 foo \\
/home/larry\$
\end{tscreen}
Vendar z uporabo \texttt{ls -l} vidimo, da je datoteka \texttt{bar}
simbolna povezava, ki kaže na \texttt{foo}.
\begin{tscreen}
/home/larry\$ \emph{ls -l foo bar} \\
\verb!lrwxrwxrwx   1 root     root           3 Aug  5 16:51 bar -> foo! \\
\verb!-rw-r--r--   1 root     root          12 Aug  5 16:50 foo! \\
/home/larry\$
\end{tscreen}

Dovoljenja datoteke se pri simbolni povezavi ne uporabljajo (vedno so
oblike \texttt{rwxrwxrwx}).  Namesto tega se uporabljajo dovoljenja
cilja simbolne povezave (v našem primeru datoteke \texttt{foo}).

Funkcionalno so trde in simbolne povezave podobne, a obstajajo
razlike.  Ena od njih je, da lahko ustvarite simbolno povezavo do
datoteke, ki ne obstaja; kar ne velja za trde povezave.  Simbolne
povezave obdela jedro drugače kot trde, kar je le tehnična, a včasih
pomembna, razlika.  Simbolne povezave so nam v pomoč, ker določajo
datoteko, na katero kažejo; pri trdih povezavah ni preprostega načina
za ugotovitev, katere datoteke so povezane na ista števila inode.

Povezave se uporabljajo v sistemu Linux na veliko mestih.  Simbolne
povezave so posebej pomembne pri slikah deljenih knjižnic v imeniku
\texttt{/lib}.  Glejte stran~\pageref{sec-upgrade-libs} za več
informacij.
\index{datoteke!povezave|)}
\index{povezave|)}
