% app-ftp.tex Info on FTP Appendix
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\chapter{Učbenik FTP-ja in seznam strežnikov}\label{app-ftplist-num}
\markboth{Dodatek B}{Učbenik FTP-ja in seznam strežnikov}
\label{app-ftp}

\index{FTP!uporaba|(}

Protokol za prenos datotek FTP (angl.\ File Transfer Protocol) je
način komunikacije, ki ga uporabljajo programi za prenos datotek med
sistemi na Internetu.  Večina sistemov Unix, VMS in MS-DOS na Internetu
ima program, imenovan \texttt{ftp}, ki ga lahko uporabljate za prenos
datotek, in če imate dostop do Interneta, je najboljši način
za jemanje programja za Linux z uporabo \texttt{ftp}.  Ta dodatek
pokriva osnovno uporabo programa \texttt{ftp} -- seveda obstaja dosti
več funkcij in uporab \texttt{ftp}-ja, kot jih je podanih tukaj.

Na koncu tega dodatka boste našli seznam strežnikov za FTP, kjer lahko
najdete programje za Linux.  Tudi če nimate neposrednega dostopa
do Interneta, lahko pa izmenjujete internetno elektronsko pošto,
so vključene informacije o uporabi storitve \texttt{ftpmail}, ki vam
omogoča prenos datotek po e-pošti.

Če za jemanje datotek z Interneta uporabljate sistem MS-DOS, Unix ali VMS,
je \texttt{ftp} ukazno usmerjen program.  Vendar obstajajo tudi druge
izvedbe \texttt{ftp}-ja, kot je različica za Macintosh (imenovana
\texttt{Fetch}) z všečnim menujskim vmesnikom, ki je precej intuitiven.
Tudi če ne uporabljate ukazno usmerjene različice \texttt{ftp}-ja, vam
lahko tukajšnje informacije pomagajo.

\bigskip
Program \texttt{ftp} se lahko uporablja za pošiljanje ali jemanje
datotek z drugim internetnih strežnikov.  V večini situacij boste
jemali programje.  Na Internetu obstajajo številni javno dostopni
\textbf{arhivni strežniki za FTP}, stroji, ki dovoljujejo, da se s
\texttt{ftp} nanje prijavi kdorkoli in jemlje prosto programje.  Eden
od takšnih arhivov je \texttt{metalab.unc.edu}, ki deluje kot eno od
glavnih tovrstnih mest za Linux.  Poleg tega nekateri strežniki za FTP
\textbf{zrcalijo} (angl.\ mirror) programje drug z drugega -- se
pravi, da se programje, poslano na en strežnik, samodejno prepiše na
številna druga mesta.  Zato ne bodite presenečeni, če boste videli
natanko enake datoteke na različnih arhivnih mestih.

\section*{Zagon \texttt{ftp}-ja}

Opazili boste, da v vzorčnih >>zaslonih<<, izpisanih spodaj, prikazujemo
le najpomembnejše informacije in da se bo tisto, kar boste videli vi,
morda razlikovalo.  Ukazi v \emph{kurzivi} ponazarjajo ukaze,
ki jih vpisujete vi, vse ostalo je zaslonski izhod.

Za klic programa \texttt{ftp} in povezavo na strežnik preprosto uporabite
ukaz
\begin{tscreen}
\$ \emph{ftp \cparam{gostiteljsko-ime}}
\end{tscreen}
kjer je \cparam{gostiteljsko-ime\/} ime strežnika, s katerim se
povezujete.  Na primer, za povezavo na mitsko mesto
\texttt{shoop.vpizza.com} lahko uporabimo ukaz
\begin{tscreen}
\$ \emph{ftp shoop.vpizza.com}
\end{tscreen}

\section*{Prijavljanje na strežnik}

Ko se \texttt{ftp} požene, bi morali videti nekaj takega:
\begin{tscreen}
Connected to shoop.vpizza.com.\\
220 Shoop.vpizza.com FTPD ready at 15 Dec 1992 08:20:42 EDT\\
Name (shoop.vpizza.com:mdw): 
\end{tscreen}
Tukaj nas \texttt{ftp} prosi za vpis uporabniškega imena, s katerim
se želimo prijaviti na \texttt{shoop.vpizza.com}.  Tukaj je privzeto
ime \texttt{mdw}, ki je moje uporabniško ime na sistemu, na katerem
poganjam FTP.  Ker nimam računa na stroju \texttt{shoop.vpizza.com},
se ne morem prijaviti nanj pod svojim imenom.  Namesto tega se za dostop
do javno dostopnega programja na strežniku FTP prijavite kot
\texttt{anonymous} in kot geslo vpišete vaš internetni e-poštni naslov
(če ga imate).  Torej bi lahko napisali
\begin{tscreen}
Name (shoop.vpizza.com:mdw): \emph{anonymous}\\
331-Guest login ok, send e-mail address as password.\\
Password: \emph{mdw@metalab.unc.edu}\\
230- Welcome to shoop.vpizza.com.\\
230- Virtual Pizza Delivery[tm]: Download pizza in\\
230- 30 cycles or less or you get it FREE!\\
ftp> 
\end{tscreen}
Seveda bi vi morali podati svoj e-poštni naslov namesto mojega
in ta se ne bo videl na zaslonu, ko ga boste vpisovali (saj je
to, teoretično gledano, >>geslo<<).  Program \texttt{ftp} bi nam
moral omogočiti prijavo in pripravljeni bomo za prenos programja.

\section*{Brskanje naokoli}

Prav, zdaj smo notri.  Naš pozornik je >>\texttt{ftp>}<< in
program \texttt{ftp} čaka na naše ukaze.  Obstaja nekaj osnovnih
ukazov, ki jih morate poznati.  Najprej, ukaza
\begin{tscreen}
ftp> \emph{ls \cparam{datoteka}}
\end{tscreen}
in
\begin{tscreen}
ftp> \emph{dir \cparam{datoteka}}
\end{tscreen}
izpišeta seznam datotek (kjer je \cparam{datoteka} izbirni
argument, ki določa izpis le določenih imen datotek).  Razlika
je v tem, da je običajno izpis \texttt{ls} skop in \texttt{dir}
podrobnejši (se pravi, z informacijami o velikosti datotek,
datumih sprememb in tako naprej).

Z ukazom
\begin{tscreen}
ftp> \emph{cd \cparam{imenik}}
\end{tscreen}
se premaknete v podani imenik (prav tako kot z ukazom \texttt{cd}
na sistemih Unix ali MS-DOS).  Uporabite lahko tudi ukaz
\begin{tscreen}
ftp> \emph{cdup}
\end{tscreen}
s katerim se premaknete v višji imenik\footnote{Imenik nad trenutnim,
podobno kot s \texttt{cd ..} v Unixu.}.

Ukaz
\begin{tscreen}
ftp> \emph{help \cparam{ukaz}}
\end{tscreen}
vam dá pomoč danega ukaza \cparam{ukaz}, vgrajenega v program
\texttt{ftp} (kot sta \texttt{ls} ali \texttt{cd}).  Če ne določite
nobenega ukaza, bo \texttt{ftp}-jev ukaz \texttt{help} izpisal
seznam vseh dostopnih ukazov.

Če na tej točki napišemo \texttt{dir}, bomo videli uvodni izpis
podimenikov imenika, kjer smo.
\begin{tscreen}
ftp> \emph{dir}\\
200 PORT command successful.\\
150 Opening ASCII mode data connection for /bin/ls.\\
total 1337
\begin{verbatim}
dr-xr-xr-x  2 root     wheel         512 Aug 13 13:55 bin
drwxr-xr-x  2 root     wheel         512 Aug 13 13:58 dev
drwxr-xr-x  2 root     wheel         512 Jan 25 17:35 etc
drwxr-xr-x 19 root     wheel        1024 Jan 27 21:39 pub
drwxrwx-wx  4 root     ftp-admi     1024 Feb  6 22:10 uploads
drwxr-xr-x  3 root     wheel         512 Mar 11  1992 usr
\end{verbatim}
226 Transfer complete.\\
921 bytes received in 0.24 seconds (3.7 Kbytes/s)\\
ftp>
\end{tscreen}
Vsak od teh vnosov je imenik, ne posamezna datoteka, ki bi jo lahko
prenesli (to nam pove znak \texttt{d} v prvem stolpcu izpisa).
Na večini strežnikov FTP najdete javno dostopno programje pod imenikom
\texttt{/pub}, zato se premaknimo tja.

\begin{tscreen}
ftp> \emph{cd pub}\\
ftp> \emph{dir}\\
200 PORT command successful.\\
150 ASCII data connection for /bin/ls (128.84.181.1,4525) (0 bytes).\\
total 846
\begin{verbatim}
-rw-r--r--   1 root     staff        1433 Jul 12  1988 README
-r--r--r--   1 3807     staff       15586 May 13  1991 US-DOMAIN.TXT.2
-rw-r--r--   1 539      staff       52664 Feb 20  1991 altenergy.avail
-r--r--r--   1 65534    65534       56456 Dec 17  1990 ataxx.tar.Z
-rw-r--r--   1 root     other     2013041 Jul  3  1991 gesyps.tar.Z
-rw-r--r--   1 432      staff       41831 Jan 30  1989 gnexe.arc
-rw-rw-rw-   1 615      staff       50315 Apr 16  1992 linpack.tar.Z
-r--r--r--   1 root     wheel       12168 Dec 25  1990 localtime.o
-rw-r--r--   1 root     staff        7035 Aug 27  1986 manualslist.tblms
drwxr-xr-x   2 2195     staff         512 Mar 10 00:48 mdw
-rw-r--r--   1 root     staff        5593 Jul 19  1988 t.out.h
\end{verbatim}
226 ASCII Transfer complete.\\
2443 bytes received in 0.35 seconds (6.8 Kbytes/s)\\
ftp>
\end{tscreen}
Tukaj lahko vidimo seznam (zanimivih?) datotek, ena od njih se
imenuje \texttt{README} in bi jo morali prenesti (večina strežnikov
FTP ima datoteko \texttt{README} v imeniku \texttt{/pub}).

\section*{Jemanje datotek}

Pred jemanjem (angl.\ downloading) datotek je nekaj stvari, za katere
morate poskrbeti.
\begin{itemize}
\item \textbf{Vključite izpisovanje višajev.} \emph{Znaki za višaj}
(angl.\ hash marks) se izpisujejo na zaslonu med prenosom datotek;
sporočajo vam, kako hitro napreduje prenos in ali vaša povezava ni
morebiti padla (da ne čakate 20 minut in mislite, da še vedno
prenašate datoteko).  V splošnem se v ta namen izpisujejo znaki
za višaj (\texttt{\#}), eden na vsakih 1024 ali 8192 bajtov, odvisno
od vašega sistema.

Med načinom z izpisom višajev in nemim načinom preklapljamo
z ukazom \texttt{hash}.
\begin{tscreen}
ftp> \emph{hash}\\
Hash mark printing on (8192 bytes/hash mark).\\
ftp>
\end{tscreen}

\item \textbf{Ugotovite tip datoteke, ki jo prenašate.}
Kar se tiče FTP-ja, obstajajo datoteke dveh vrst: \emph{binarne} in
\emph{tekstovne}.  Večina datotek, ki jih boste prenašali, je
binarnih: to so programi, stisnjene datoteke, arhivne datoteke in tako
naprej.  Vendar so mnoge datoteke (kot datoteke \texttt{README},
slov.\ \texttt{BERI\_ME}, ipd.) tekstovne.

Zakaj je pomemben tip datoteke?  Le zato, ker se morajo na nekaterih
sistemih (kot je sistem MS-DOS) določeni znaki v tekstovni datoteki,
kot je znak za povratek v vrsti, pretvoriti tako, da je datoteka berljiva.
Med prenosom v binarnem načinu ni nobenega pretvarjanja -- datoteka se
preprosto prenese bajt za bajtom.

Ukaza \texttt{bin} in \texttt{ascii} nastavita način prenosa na binarnega
ali tekstovnega, v tem vrstnem redu.
\emph{Ko dvomite, vedno uporabljajte binarni način prenosa datotek.}
Če poskušate prenesti binarno datoteko v tekstovnem načinu, jo boste
pokvarili in bo neuporabna.  (To je ena od najpogostejših napak pri
uporabi FTP-ja.)  Vendar lahko uporabljate tekstovni način za datoteke
z navadnim besedilom (njihova imena se pogosto končujejo s \texttt{.txt}).

V našem primeru prenašamo datoteko \texttt{README}, ki je najverjetneje
tekstovna, zato uporabimo ukaz
\begin{tscreen}
ftp> \emph{ascii}\\
200 Type set to A.\\
ftp>
\end{tscreen}

\item \textbf{Nastavite vaš lokalni imenik.}
Vaš \emph{lokalni imenik} je imenik na vašem sistemu, kjer želite, da
končajo vzete datoteke.  Medtem ko ukaz \texttt{cd} spremeni oddaljeni
imenik (na oddaljenem stroju, s katerega FTP-jate), ukaz \texttt{lcd}
spremeni lokalni imenik.

Na primer, za nastavitev lokalnega imenika na \texttt{/home/db/mdw/tmp},
uporabite ukaz
\begin{tscreen}
ftp> \emph{lcd /home/db/mdw/tmp}\\
Local directory now /home/db/mdw/tmp\\
ftp>
\end{tscreen}
\end{itemize}

Zdaj ste pripravljeni na jemanje datoteke.  Za to se uporablja
ukaz
\begin{tscreen}
get \cparam{oddaljeno-ime} \cparam{lokalno-ime}
\end{tscreen}
kjer je \cparam{oddaljeno-ime} ime datoteke na oddaljenem stroju
in \cparam{lokalno-ime} ime, ki ga želite dati datoteki na vašem
lokalnem stroju.  Argument \cparam{lokalno-ime} je izbiren;
privzeto se za lokalno ime datoteke vzame enako ime, kot je
oddaljeno.  Vendar če na primer jemljete datoteko \texttt{README},
v vašem lokalnem imeniku pa že imate datoteko z imenom \texttt{README},
jo boste želeli preimenovati v kakšno drugo \cparam{lokalno-ime},
tako da obstoječa ne bo prepisana z novo.

V našem primeru za jemanje datoteke \texttt{README} preprosto
uporabimo:
\begin{tscreen}
ftp> \emph{get README}\\
200 PORT command successful.\\
150 ASCII data connection for README (128.84.181.1,4527) (1433 bytes).\\
\#\\
226 ASCII Transfer complete.\\
local: README remote: README\\
1493 bytes received in 0.03 seconds (49 Kbytes/s)\\
ftp>
\end{tscreen}

\section*{Končevanje FTP}

Za konec vaše seje FTP uporabite ukaz
\begin{tscreen}
ftp> \emph{quit}
\end{tscreen}
Ukaz zapusti program \texttt{ftp}.
Za konec trenutne povezave z oddaljenim strežnikom FTP
lahko uporabite ukaz
\begin{tscreen}
ftp> \emph{close}
\end{tscreen}
potem lahko uporabite ukaz \texttt{open} za začetek seje
z drugim strežnikom (ne da bi zapustili program FTP).

\begin{tscreen}
ftp> \emph{close}\\
221 Goodbye.\\
ftp> \emph{quit}
\end{tscreen}

\section*{Uporaba storitve \texttt{ftpmail}}
\index{ftpmail@\texttt{ftpmail}}

Storitev \texttt{ftpmail} omogoča pridobitev datotek z arhivov FTP po
internetni elektronski pošti.  Če nimate neposrednega dostopa do
Interneta, a lahko izmenjujete pošto na Internet (z uporabo storitve,
kot je CompuServe, na primer), je \texttt{ftpmail} dober način, da
dobite datoteke z arhivnih mest za FTP.  Žal je storitev
\texttt{ftpmail} lahko počasna, posebej kadar zahtevate velike
datoteke.  Pred poskusom prenašanja velikih količin programja preko
storitve \texttt{ftpmail} se prepričajte, da bo vaša čakalna vrsta za
pošto zmogla obdelati ves prihajajoči promet.  Mnogi sistemi
uporabljajo za prihajajočo elektronsko pošto sistem kvot in lahko
odstranijo vaš račun, če jo vaša pošta preseže.  Uporabite zdrav
razum.

Strežnik \texttt{metalab.unc.edu}, eden od večjih arhivnih mest za Linux,
je tudi dom strežnika \texttt{ftpmail}.  Za uporabo te storitve
pošljite elektronsko pošto na
\begin{tscreen}
ftpmail@metalab.unc.edu
\end{tscreen}
s telesom sporočila, ki vsebuje le besedo
\begin{tscreen}
help
\end{tscreen}
To vam bo poslalo nazaj seznam ukazov za \texttt{ftpmail} in kratek
učbenik uporabe sistema.

Na primer, za izpis seznama datotek za Linux, ki jih najdete na
\texttt{metalab.unc.edu}, pošljite na zgornji naslov pošto, ki vsebuje
naslednje besedilo:
\begin{tscreen}
open metalab.unc.edu\\
cd /pub/Linux\\
dir\\
quit
\end{tscreen}

Storitev \texttt{ftpmail} lahko uporabljate za priključitev na
katerokoli arhivno mesto za FTP; niste omejeni le na
\texttt{metalab.unc.edu}.  Naslednji razdelek našteva številne
arhive FTP za Linux.

\section*{Seznam strežnikov FTP za Linux}
\index{FTP!seznam arhivov}
Tabela na strani~\pageref{table-ftp-sites} je seznam najbolj znanih
strežnikov FTP z arhivi programja za Linux.  Zavedajte se, da jih
zrcalijo mnogi drugi strežniki, in zelo verjetno boste trčili ob
Linux na številnih strežnikih, ki niso na tem seznamu.

\begin{table}\begin{center}
\small\begin{tabular}{lll} 
\hline
ime strežnika                        &  naslov IP       & imenik\\
\hline
\texttt{tsx-11.mit.edu} & \texttt{18.86.0.44} & \texttt{/pub/linux}\\
\texttt{metalab.unc.edu} & \texttt{152.19.254.81} & \texttt{/pub/Linux}\\
\texttt{nic.funet.fi} & \texttt{128.214.248.6} & \texttt{/pub/Linux}\\
\texttt{ftp.mcc.ac.uk} & \texttt{130.88.203.12} & \texttt{/pub/linux} \\
\texttt{ftp.informatik.rwth-aachen.de} & \texttt{137.226.116.98} & \texttt{/pub/Linux} \\
\texttt{ftp.ibp.fr} & \texttt{132.227.60.2} & \texttt{/pub/linux} \\ %SE NE ODZIVA!
\texttt{ftp.uu.net} & \texttt{192.48.96.9} & \texttt{/systems/unix/linux} \\ %STARO!
\texttt{wuarchive.wustl.edu} & \texttt{128.252.135.4} & \texttt{/systems/linux} \\
\texttt{ftp.win.tue.nl} & \texttt{131.155.70.189} & \texttt{/pub/linux} \\
\texttt{ftp.ibr.cs.tu-bs.de} & \texttt{134.169.34.15} & \texttt{/pub/linux} \\
\texttt{ftp.linuxberg.com} & \texttt{207.136.80.196} & \texttt{/pub} \\
\end{tabular}\normalsize%\rm
\caption{Strežniki FTP za Linux}
\label{table-ftp-sites}
\end{center}\end{table}

\texttt{tsx-11.mit.edu}, \texttt{metalab.unc.edu} in \texttt{nic.funet.fi}
so >>domače mesto<< za programsko opremov za Linux, kjer se odloži
večina novega programja.  Večina od drugih mest na seznamu zrcali
nekakšno kombinacijo teh treh.  Izberite arhivno mesto, ki vam je
zemljepisno najbližje, da boste zmanjšali promet po omrežju.


\subsection*{Slovenski strežniki za Linux}
\index{FTP!seznam arhivov!slovenskih}
Tabela na strani~\pageref{table-ftp-sl-sites} je seznam slovenskih
strežnikov FTP z arhivi za Linux.  Žal v Sloveniji nimamo več
zrcala \texttt{metalab.unc.edu}, najbližje je v Avstriji.

\begin{table}\begin{center}
\small\begin{tabular}{lll} 
\hline
ime strežnika              &  naslov IP      & imenik\\
\hline
\texttt{ftp.lugos.si}          &  \texttt{193.2.1.35} & \texttt{/pub/lugos}\\
\texttt{sunsite.fri.uni-lj.si} &  \texttt{193.2.72.6} & \texttt{/pub/linux}\\
\texttt{ftp.arnes.si}          &   193.2.1.72 & \texttt{/software/gnu/}\\
\texttt{ftp.fri.uni-lj.si}     &  193.2.72.6  & \texttt{/pub/linux/}\\
\texttt{ftp.kibla.org}         &  \texttt{193.2.52.195} & \texttt{/pub/Linux}\\
\texttt{ftp.fpp.edu}           &  \texttt{193.2.75.40} & \texttt{/pub/linux}\\
\texttt{mercur.s-gms.ms.edus.si}& 193.2.143.2              & \texttt{/pub/UNIX/linux/}\\
\end{tabular}\normalsize%\rm
\caption{Slovenski arhivi za Linux}
\label{table-ftp-sl-sites}
\end{center}\end{table}

\index{FTP!uporaba|)}
