Een snelle leidraad voor het gebruik van ftp.
Het standaard ftp-programma is de oorspronkelijke ftp-client. Het wordt standaard met de meeste Linux-distributies meegeleverd. Het verscheen voor het eerst in 4.2BSD, dat werd ontwikkeld door de Universiteit van California, Berkeley.
ftp
programma
Het gebruik van ftp is eenvoudig. Stel dat je een verbinding wilt maken met de anonieme ftp-site metalab.unc.edu om de laatste Linux-kernelsource te downloaden.
Typ achter de opdrachtregel:
$ ftp metalab.unc.edu
Het ftp-programma zal proberen een verbinding tot stand te brengen met
metalab.unc.edu. Een andere manier om dit te doen is
ftp
zonder parameters vanaf de opdrachtregel op te starten en gebruik
te maken van het open
commando, met als argument de naam van de site:
$ ftp
ftp> open metalab.unc.edu
Wanneer je een verbinding met een FTP-site hebt, zal het je vragen
om een login (de enter-toets indrukken zal je inloggen met je lokale
gebruikersnaam, in dit geval foo
: We loggen in als anonymous
of ftp
, om bij het publieke archief te komen.
220 helios.oit.unc.edu FTP server (Version wu-2.6.0(2) Wed Nov 17 14:44:12
EST 1999) ready.
Name (metalab.unc.edu:foo):
Nu voeren we als wachtwoord een volledig e-mailadres in (dit vereisen de meeste publieke FTP-sites).
331 Guest login ok, send your complete e-mail address as password.
Password:
Na een succesvolle login, wordt de volgende informatie gegeven:
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Nadat je op een ftp-site bent ingelogd, zal ftp
het bestandstype
voor het transport afdrukken. In onze situatie is dit binair. In binaire mode
worden de bestanden bit voor bit getransporteerd, zoals ze op de FTP-server
staan. In ascii-mode zal de tekst echter direct worden gedownload.
Je kunt door het intikken van ascii
of binary
tussen de
twee typen wisselen.
Je wilt de kernelsource downloaden dus laat je het bestandstype op binary staat. Het binaire type is ook hetgeen je zou gebruiken voor enige niet-tekst bestanden -- zoals grafische afbeeldingen, zip/gzip archieven, uitvoerbare programma's, enz. Gebruik de binary-mode als je twijfelt.
Je geeft de opdracht ls
om een lijst met de bestanden te zien
te krijgen. Het commando ls
op ftp-servers wordt op de remote-server
uitgevoerd, dus de opties die je op de opdrachtregel kunt gebruiken,
variëren van server tot server. De meest gebruikelijke opties zijn in
het algemeen wel beschikbaar, kijk in de manpage van ls
voor de
details.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 33590
-r--r--r-- 1 root other 34348506 Dec 03 03:53 IAFA-LISTINGS
lrwxrwxrwx 1 root other 7 Jul 15 1997 README -> WELCOME
-rw-r--r-- 1 root other 890 Nov 15 13:11 WELCOME
dr-xr-xr-x 2 root other 512 Jul 15 1997 bin
dr-xr-xr-x 2 root other 512 Jul 15 1997 dev
dr-xr-xr-x 2 root other 512 Jul 18 1997 etc
drwxrwxrwx 11 ftp 20 4608 Nov 28 16:00 incoming
lrwxrwxrwx 1 root other 13 Jun 04 1998 ls-lR -> IAFA-LISTINGS
dr-xr-xr-x 17 root root 512 Jun 08 11:43 pub
dr-xr-xr-x 3 root other 512 Jul 15 1997 unc
dr-xr-xr-x 5 root other 512 Jul 15 1997 usr
226 Transfer complete.
Als de opdracht ls
zoveel bestanden weergeeft dat ze van het
scherm scrollen, dan kun je gebruik maken van de Shift-PageUp om naar
boven te scrollen. Dit werkt in de Linux console mode als ook in een
xterm of rxvt.
Op publieke FTP-archieven worden de te downloaden bronnen meestal in
de directory /pub
bewaard. In dit voorbeeld weet je al dat de
kernelsources in de directory /pub/Linux/kernel
staan, dus typ
je het volgende om in die directory terecht te komen:
ftp> cd pub/Linux/kernel
250-README for kernel
250-
250-What you'll find here: kernel sources and patches
250-
250-
250 CWD command successful.
De berichten die je te zien krijgt, die met "250" beginnen, bestaan uit informatie die door de server zijn verzonden. In dit geval is de ftp-server zodanig geconfigureerd dat het je automatisch het README-bestand stuurt als je naar de directory gaat.
Na nu nog een ls
, zie je dat je met cd
naar de
v2.2 directory wilt gaan. Je geeft nogmaals de opdracht
ls
, en vindt dan het bestand dat je wilt downloaden. Het is
linux-2.2.13.tar.gz
. Dus tik je in:
ftp> get linux-2.2.13.tar.gz
local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).
Het ftp-programma is begonnen met het opslaan van het remote bestand
linux-2.2.13.tar.gz
als het lokale bestand
linux-2.2.13.tar.gz
.
Als je het als het lokale bestand foo.tar.gz
op zou willen slaan,
zou je dit als volgt aan kunnen hebben geven:
ftp> get linux-2.2.13.tar.gz foo.tar.gz
local: foo.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).
Als je meer dan één bestand tegelijkertijd wilt downloaden,
dan zal je de opdracht mget
(meerdere get's) moeten gebruiken.
Je kunt mget
met een door spaties gescheiden lijst met de te
downloaden bestandsnamen gebruiken, óf je kunt de opdracht
mget
met wildcards gebruiken. Bijvoorbeeld:
ftp> mget linux*
Hiermee zouden alle bestanden beginnend met de string "linux" worden
opgehaald. Normaal gesproken zal mget
voor ieder bestand om
bevestiging vragen alvorens het wordt gedownload.
Je kunt dit met het prompt
-commando aan- of uitzetten.
Stel nu dat je wat software hebt geschreven en dat je het naar Metalab wilt uploaden voor opname in hun Linux software-archief. Als eerste ga je naar de directory /incoming (op de meeste FTP-servers komt een directory voor die meestal incoming of uploads wordt genoemd, waar bestanden kunnen worden geupload), vervolgens gebruik je de opdracht put:
ftp> cd /incoming
ftp> put foo.tar.gz
local: foo.tar.gz remote: foo.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for foo.tar.gz.
226 Transfer complete.
10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec)
Het commando put
werkt op dezelfde wijze als de opdracht
get
, dus je kunt mput
gebruiken om tegelijkertijd meerdere
bestanden te uploaden. Je kunt ook een lokaal bestand met een andere
bestandsnaam naar de server uploaden door als argument de remote bestandsnaam
en/of de naam van het pad op te geven.
Wat als het bestand foo.tar.gz
zich niet in je huidige directory
bevindt wanneer je het probeert te uploaden?
Je kunt met de opdracht lcd
(local change directory) naar een andere
lokale directory overschakelen:
ftp> lcd /home/foo/
Local directory now /home/foo
De ftp-client ondersteunt het gebruik van het uitroepteken (!) voor het uitvoeren van lokale opdrachten. Om bijvoorbeeld een lijst met bestanden in je huidige lokale directory te krijgen, geef je op:
ftp> !ls
De wijze waarop dit werkt is dat ftp de shell aanroept (aangegeven in de
omgevingsvariabele $SHELL
), en het is de shell die ls
uitvoert. Dus je kunt iedere opdrachtregel uitvoeren die met je shell werkt,
door er gewoon een "!" aan te laten voorafgaan (de standaardshell onder
de meeste Linux-distributies is bash, de Bourne Again SHell).
Houdt er alsjeblieft rekening mee dat !cd
niet werkt zoals je
wellicht verwacht, daarom bestaat er een commando lcd
.
Zou het niet fijn zijn als je de voortgang kon bekijken op het moment dat je een bestand met ftp aan het downloaden bent? Je kunt bij het downloaden van een bestand de opdracht hash gebruiken, waardoor er hash markeringen worden weergegeven:
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
Zoals je kunt zien, zal ftp voor iedere 1024 bytes aan gedownloade data een hash markering afdrukken.
Er is ook een tick
optie.
ftp> tick
Tick counter printing on (10240 bytes/tick increment).
Dit heeft als effect dat er bij het downloaden van een bestand iets dergelijks
als het volgende wordt afgedrukt:
Bytes transferred: 11680
Er zijn nog veel andere ftp-opdrachten. Als je hier permissie voor hebt
(wat zo zou moeten zijn, als je met je eigen privé shell-account
een verbinding hebt gemaakt), kun je met de opdracht mkdir
een
directory op de remote-server aanmaken. Met de opdracht delete
kun
je een bestand van de remote server verwijderen, of met rmdir
een
directory verwijderen. Je kunt ook de bestandspermissies wijzigen met het
commando chmod
.
Zie de online help in het ftp-programma (toegankelijk door het intikken
van help zonder argumenten voor een lijst met opdrachten, of help
<commandonaam> voor specifieke hulp over een commando) voor uitgebreidere
informatie over het gebruik van ftp. Je kunt ook de Unix manpage over ftp
lezen door het achter de opdrachtprompt intikken van man ftp
.