% Linux Installation and Getting Started    -*- TeX -*-
% tar.tex
% Copyright (c) 1993 by Matt Welsh and Lars Wirzenius
%
% 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{Arhiviranje in komprimiranje datotek}
%\markboth{Sistemsko upravljanje}{Arhiviranje in komprimiranje datotek}

Preden spregovorimo o varnostnih kopijah (angl.\ backups), moramo
uvesti orodja, ki se uporabljajo za arhiviranje datotek na sistemih
Unix.

\subsection{Uporaba pripomočka \texttt{tar}}

Najpogosteje se uporablja za arhiviranje datotek ukaz \texttt{tar}.
Njegova ukazna skladnja je
\begin{tscreen}
tar \cparam{izbire} \cparam{datoteke} 
\end{tscreen}
kjer je \textsl{izbire} seznam ukazov in izbir za \texttt{tar} in
\textsl{datoteke} seznam datotek za dodajanje ali izločitev iz arhiva.

Na primer, ukaz
\begin{tscreen}
\# \emph{tar cvf rezerva.tar /etc}
\end{tscreen}
zapakira vse datoteke v imeniku \texttt{/etc} v arhivsko datoteko
\texttt{rezerva.tar}.  Prvi argument ukaza \texttt{tar},
>>\texttt{cvf}<<, je >>ukaz<< \texttt{tar}-u.  Izbira \texttt{c}
naroči \texttt{tar}-u, da naj ustvari novo arhivno datoteko.  Izbira
\texttt{v} prisili \texttt{tar}, da uporablja gostobesedni način,
izpisujoč vsako ime datoteke, ko se arhivira.  Izbira >>\texttt{f}<<
pove \texttt{tar}-u, da je naslednji argument \texttt{rezerva.tar} ime
arhivne datoteke, ki naj se ustvari.  Ostanek argumentov ukaza
\texttt{tar} predstavljajo imena datotek in imenikov, ki naj se dodajo
v arhiv.

Ukaz
\begin{tscreen}
\# \emph{tar xvf rezerva.tar}
\end{tscreen}
bo odarhiviral arhivno datoteko \texttt{rezerva.tar} v trenutni imenik.

\blackdiamond
Stare datoteke z enakim imenom so prepisane, ko se datoteke odtarajo
v obstoječi imenik.

Preden odarhivirate datoteke v formatu za \texttt{tar}, je pomembno
vedeti, kje bi morale biti datoteke odpakirane.  Denimo, da arhivirate
naslednje datoteke: \texttt{/etc/hosts}, \texttt{/etc/group} in
\texttt{/etc/passwd}.  Če uporabite ukaz
\begin{tscreen}
\# \emph{tar cvf rezerva.tar /etc/hosts /etc/group /etc/passwd}
\end{tscreen}
je ime imenika \texttt{/etc/} dodano pred vsakim imenom datoteke.
Za odtaranje datotek na pravilno mesto uporabite
\begin{tscreen}
\# \emph{cd /} \\
\# \emph{tar xvf rezerva.tar}
\end{tscreen}
saj so datoteke odtarane z imenom poti, shranjenim v arhivni datoteki.

Vendar če arhivirate datoteke z ukazom
\begin{tscreen}
\# \emph{cd /etc} \\
\# \emph{tar cvf rezerva.tar hosts group passwd}
\end{tscreen}
se ime imenika ne shrani v arhivno datoteko.  Zato morate pred
odtaranjem datotek narediti >>\texttt{cd /etc}<<.  Kot lahko vidite,
način izdelave datoteke tar določa veliko razliko, kje jo morate
odtarati.  Ukaz
\begin{tscreen}
\# \emph{tar tvf rezerva.tar}
\end{tscreen}
se lahko uporablja za prikaz izpisa datotek v arhivu, ne da bi jih
odtarali.  Vidite lahko imenik, relativno na katerega so datoteke v
arhivu shranjene, in odtarate arhiv na pravo mesto.

\subsection{\texttt{gzip} in \texttt{compress}}

Za razliko od arhivnih programov za MS-DOS, \texttt{tar} samodejno ne
stiska datotek, ko jih arhivira.  Če arhivirate dve enomegabajtni
datoteki, bo končna datoteka \texttt{.tar} velika malo več kot dva
megabajta.  Ukaz \texttt{gzip} stisne podatke v datoteki (ki ni nujno
datoteka \texttt{.tar}).  Ukaz
\begin{tscreen}
\# \emph{gzip -9 rezerva.tar}
\end{tscreen}
stisne datoteko \texttt{rezerva.tar} v datoteko
\texttt{rezerva.tar.gz}.  Izbira
\texttt{-9} pove \texttt{gzip}-u, da naj uporabi največji
faktor stiskanja.

Ukaz \texttt{gunzip} se lahko uporablja za razširjanje gzipane
datoteke.  Enako lahko uporabljate tudi >>\texttt{gzip~-d}<<.

Pripomoček \texttt{gzip} je relativno novo orodje v skupnosti Unixa.
Mnogo let se je namesto njega uporabljal ukaz \texttt{compress}.
Vendar zaradi različnih dejavnikov, vključno s pričkanji o patentu za
algoritem stiskanja podatkov programa \texttt{compress} in dejstva, da
je \texttt{gzip} veliko bolj učinkovit, \texttt{compress} počasi
izginja.

Datoteke, ki jih obdela \texttt{compress}, se končajo z
>>\texttt{.Z}<<.  Datoteka \texttt{rezerva.tar.Z} je s compressom
stisnjena različica datoteke \texttt{rezerva.tar}, medtem ko je
\texttt{rezerva.tar.gz}, z gzipom stisnjena različica\footnote{Nekaj
časa se je za gzipane datoteke uporabljal podaljšek \texttt{.z} (mali
>>\texttt{z}<<).  Dogovorjeni podaljšek za \texttt{gzip} je zdaj
\texttt{.gz}.}.  Ukaz \texttt{uncompress} se uporablja za razširitev
datoteke, zgoščene s \texttt{compress}-om.  Je ekvivalenten ukazu
>>\texttt{compress~-d}.<< Tudi ukaz \texttt{gunzip} ve, kako mora
obravnavati datoteke, stisnjene s \texttt{compress}-om.

\subsection{Sestavljanje vsega skupaj}

Za arhiviranje skupine datotek in stiskanje rezultata uporabite
ukaza:
\begin{tscreen}
\# \emph{tar cvf rezerva.tar /etc} \\
\# \emph{gzip -9 rezerva.tar}
\end{tscreen}
Rezultat je \texttt{rezerva.tar.gz}.  Za odpakiranje te datoteke
uporabite obratna ukaza:
\begin{tscreen}
\# \emph{gunzip rezerva.tar.gz} \\
\# \emph{tar xvf rezerva.tar}
\end{tscreen}
Vedno se prepričajte, da ste v pravilnem imeniku, preden odpakirate
datoteko tar.

Z nekaj spretnosti lahko vse to opravite tudi v eni vrstici.
\begin{tscreen}
\# \emph{tar cvf - /etc $\mid$ gzip -9c $>$ rezerva.tar.gz}
\end{tscreen}
Tukaj pošiljamo datoteko tar na >>\texttt{-}<<, kar označuje
standardni izhod iz programa \texttt{tar}.  Ta se po cevi usmeri na
standardni vhod za program \texttt{gzip}, ki stisne prihajajočo
datoteko tar.  Rezultat se shrani v datoteko \texttt{rezerva.tar.gz}.
Izbira \texttt{-c} naroči \texttt{gzip}-u, naj pošlje svoj izhod na
standardni izhod, ki ga preusmerimo v \texttt{rezerva.tar.gz}.

En sam ukaz za odpakiranje te arhivske datoteke bi bil:
\begin{tscreen}
\# \emph{gunzip -c rezerva.tar.gz $\mid$ tar xvf -}
\end{tscreen}
Spet, \texttt{gunzip} razširi vsebino datoteke \texttt{rezerva.tar.gz}
in pošlje rezultat, datoteko tar, na standardni izhod.  Ta se po cevi
prenese do \texttt{tar}-a, ki prebere >>\texttt{-}<<, tokrat se ta
znak nanaša na standardni vhod za \texttt{tar}.

Na srečo ukaz \texttt{tar} vključuje tudi izbiro \texttt{z} za
samodejno sprotno zgoščevanje/razširitev datotek z uporabo algoritma
zgoščevanja \texttt{gzip}.

Ukaz
\begin{tscreen}
\# \emph{tar cvfz rezerva.tar.gz /etc}
\end{tscreen}
je ekvivalenten ukazoma
\begin{tscreen}
\# \emph{tar cvf rezerva.tar /etc} \\
\# \emph{gzip rezerva.tar}
\end{tscreen}
Kot lahko uporabite tudi ukaz
\begin{tscreen}
\# \emph{tar xvfz rezerva.tar.Z}
\end{tscreen}
namesto ukazov
\begin{tscreen}
\# \emph{uncompress rezerva.tar.Z} \\
\# \emph{tar xvf rezerva.tar}
\end{tscreen}

Poglejte strani priročnika za \texttt{tar} in \texttt{gzip} za
podrobnejša navodila.
