FTP kliendi kasutamine

Allikas: Kuutõrvaja
Redaktsioon seisuga 14. jaanuar 2010, kell 19:43 kasutajalt Imre (arutelu | kaastöö) (Kasulikud lisamaterjalid)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)

FTP olemus

FTP (File Transfer Protocol) annab võimaluse võrku (sh lokaalvõrk, internet) ühendatud arvutite vahel faile kopeerida. Võrgus olevad arvutid võivad olla erinevate operatsioonisüsteemidega, kasutada erinevaid failisüsteeme ja kooditabeleid. Faili kopeerimise juures osalevad kaks poolt:

  • klient - reeglina algatab, lõpetab ja juhib FTP seanssi
  • server - toimib teenindajana

Lisaks failide kopeerimisele saab:

  • lasta FTP serveril faile pakkida
  • kasutada makrosid tihtiesinevate FTP käsujadade sisestamiseks
  • manipuleerida serveri failisüsteemis

Ühenduse loomine ja lõpetamine

Vaatame konkreetsete näidete varal, kuidas klient ja server saavad faile vahetada.

Serveriga ühenduse võtmiseks peab kasutaja teadma serveri nime ja tavaliselt omama seal ka kasutajatunnust. Seansi algul küsitakse kliendilt kasutajanime ja parooli.

bash~$ ftp
ftp> open ftp.zoo.tartu.ee
Connected to ftp.zoo.tartu.ee.
220 ftp.zoo.tartu.ee FTP server (Version wu-2.4.2-VR16(1) Sun May 9 20:10:03 CDT 1999) ready.
Name (ftp.zoo.tartu.ee:priit):
331 Password required for priit.
Password:
230 User priit logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Nüüd olete serverisse sisse saanud ja võite toimetama hakata.

Ühenduse lõpetamine toimub käsuga disconnect; programmi lõpetamine toimub käsuga bye.

ftp> disconnect
221-You have transferred 45667 bytes in 4 files.
221-Total traffic for this session was 47888 bytes in 5 transfers.
221-Thank you for using the FTP service on ftp.zoo.tartu.ee.
221 Goodbye.
ftp> bye
bash~$

Te võite ühenduse loomisel serveri nime ka kohe sisestada:

bash~$ ftp ftp.zoo.tartu.ee


Kohaliku ja kauge masina failisüsteemides õiendamine

FTP seansi juures peab tähele panema, et teie antud käsud toimivad kahes failisüsteemis: kohalik arvuti (klient) on see, kus te ftp programmi käivitasite kauge arvuti (server) on see, millega te avasite ühenduse

Õiendamine kauge arvuti failisüsteemis (on võimalik pärast ühenduse loomist ja serverisse sisselogimist) toimub sarnaselt UNIXi koorikus toimetamisele järgmiste FTP käsukude abil:

cd - kataloogi vahetamine 
ls, dir - kataloogi sisu kuvamine 
mkdir - kataloogi moodustamine 
rmdir - kataloogi kustutamine 
delete - faili kustutamine 
mdelete -mitme faili kustutamine 
pwd - käesoleva kataloogi tee näitamine  
chmod xxx filename - failiõiguste muutmine (kui serveris sellised asjad üldse eksisteerivad); xxx näitab failiõigustele vastavat kaheksandarvu, nt 755 

Õiendamine kohaliku arvuti failisüsteemis:

lcd - kataloogi vahetamine; kuna kataloogi vahetamisel teatatakse uue kataloogi nimi, siis saab töökataloogi nime vaatamiseks kasutada käsku 'lcd .' 

Te saate käivitada ftp programmi seest kohaliku arvuti käske/programme alustades sisestust hüüumärgiga (!):

!ls - kohaliku kataloogi sisu näitamine 
!mkdir - kataloogi moodustamine kohalikus masinas 

Ainult hüüumärgi sisestamine võimaldab põigata kohaliku arvuti koorikusse, kust saab naasta FTP seanssi käsuga exit.

Näiteks põikame koorikusse vaatama, mis kell on ja kes on kohalikus süsteemis ning jätkame FTP seanssi

ftp>!
bash~$ date
...
bash~$ who
...
bash~$ exit
ftp>

Failide kopeerimine

Käsk put (ingl. k. pane, aseta) tähendab faili kopeerimist kohalikust arvutist kaugesse. Käsk get (ingl. k. saa, võta vastu) tähendab faili kopeerimist kaugest arvutist kohalikku.

Olles sisenenud nii kohalikus kui kauges arvutis sobivasse kataloogi, saate faili saata

ftp> put failinimi

ning faili vastu võtta

ftp> get failinimi

Kui te soovite, et kopeeritav fail omaks teises arvutis uut nime, sisestage

ftp> put failinimi uusfailinimi
ftp> get failinimi uusfailinimi

Erinevad operatsioonisüsteemid esitavad failinimedele erinevaid nõudmisi ja sellepärast võib teil tekkida vajadus nimesid muuta.

ftp programm ei võimalda vahetult kataloogistruktuure kopeerida, kuid võimalik on samas kataloogis asuvate failide poole ühekorraga pöörduda, kasutades malle:

ftp> mput *

Kõigi käesolevas kataloogis sisalduvate failide kopeerimine kohalikust kaugesse arvutisse.

või

ftp> mget *

Kõigi käesolevas kataloogis sisalduvate failide kopeerimine kaugest kohalikku arvutisse.

Kui te ei soovi, et iga faili kopeerimise kohta eraldi kinnitust küsitakse, andke enne käsk prompt

ftp> prompt

Vahel on vajadus lisada kauges arvutis oleva faili lõppu kohalikust masinast faile juurde. Selleks on käsk append

ftp> put tekst1 tekst
ftp> append tekst2 tekst
ftp> append tekst3 tekst

Tulemusena on kauge masina faili tekst lõpus failide tekst1, tekst2, tekst3 sisu.

Kui te soovite kauge masina kataloogi listingut salvestada kohalikku faili, siis

ftp> ls ~/public_html ls_koduleht

ning kodulehe kataloogi ~/public_html listing kaugest masinast salvestatakse kohalikku faili ls_koduleht.

Andmevahetuse tüübid

Algul märkisime, et FTP võimaldab pidada ühendust väga erinevate masinate vahel. Kahendfailid (nt pildid, muusikafailid) on kõikjal esitatud ühesuguse bitijadana ja nende kopeerimisega tavaliselt probleeme ei ole. Küll aga on tegu ASCII failide, nt HTML dokumentide ja CGI skriptide kopeerimisel. Erinevad operatsioonisüsteemid kirjeldavad spetsiaalsümboleid erinevalt. Nt reavahetust märgib UNIXi süsteemis üks bait, mille väärtus on kuueteistkümnendsüsteemis '0A'; DOS'is aga kaks baiti, kuueteistkümnendsüsteemis '0A0D'.

Kui te kopeerite UNIXi süsteemist seal koostatud ASCII faili DOSi süsteemi, andke enne käsk ascii

ftp> ascii
ftp> get tekst.asc

Siis hoolitseb FTP spetsiaalsümbolite õige teisenduse eest.

Tänapäeval ei esine puhtaid ASCII tekstifaile palju ja seega on kõige kindlam valida andmevahetuse tüübiks binary

ftp> bin
ftp> get tali.jpg

Passiivne ja aktiivne andmevahetus

Tehniliselt käib FTP seanss kasutades kahte ühendust: kontrollkanalis liiguvad seanssi juhtivad korraldused andmekanalis liiguvad andmed

  • Aktiivse andmevahetuse puhul algatab kontrollkanalil ühenduse klient ja andmekanali liikluse server.
  • Passiivse andmevahetuse puhul algatab mõlemad ühendused klient.

Kui kohalik masin asub tulemüüri taga, on võimalik, et tulemüür ei luba väljast sisse ühendusi tekitada ja näib, et FTP ei tööta. Sel juhul tasub enne kopeerimisi anda käsk passiivseks andmevahetuseks

ftp> passive

Üleminekuks aktiivsele andmevahetusele on käsk active.

Serveri kannatuse katkemine

Kui FTP seanss kestab ning teatud aja (nt 15 minutit) jooksul ei anta uusi korraldusi ja parasjagu ei kopeeru midagi, siis katkestab server ühenduse. Selle aja pikkust, mida nimetatakse taimaudiks, saab muuta serveri poolt aktsepteeritavates piirides:

ftp> idle 600

Viisakad on väärtused kuni 7200 sekundit (so kaks tundi).

Sisselogimise automatiseerimine

UNIXi programmil ftp on olemas algsättimiste fail nimega .netrc, mille sisu loetakse läbi iga kord peale programmi ftp käivitamist.

Teie kodukataloogis oleva ~/.netrc faili sisu võib olla näiteks selline:

machine ftp.funet.fi
login anonymous
password priit@zoo.tartu.ee

Näide automatiseerib ftp.funet.fi nimelise masinaga ühendumisel anonüümse FTP-ga sisselogimise. Sellesse faili võite kirjutada kõiki programmi ftp seest antavaid käske, võite omada sissekandeid mitme erineva masina kohta. Oma kasutajanime ja parooli sinna faili panna on ebasoovitav, sest keegi võib faili sisuga lubamatult tutvuda.


Makrod

Ftp programm võimaldab seostada käskude järgnevusi mingi unikaalse sõnaga, mille sisestamine järgnevuse täidab. Sellist järgnevust nimetatakse ftp makroks.

Tavaliselt defineeritakse makrod ~./netrc failis

talvepildid
lcd /home/priit/talv
cd /home/priit/public_html/talv
put talv*.gif

Makro 'talvepildid' käivitamine

ftp> $ talvepildid

Makrot võib ka ftp programmi sees käsu macdef abil defineerida

ftp> macdef pildid
Enter macro line by line, terminating it with a null line
mkdir jpg
mkdir gif
mkdir tif

ftp> $ pildid
mkdir jpg
257 "/home/priit/jpg" new directory created.
mkdir gif
257 "/home/priit/gif" new directory created.
mkdir tif
257 "/home/priit/tif" new directory created.
ftp> 

Kui soovite kasutada argumente, siis talitage näite eeskujul:

ftp> macdef args
mkdir $1
mkdir $2
mkdir $3
ftp> args talv suvi sygis
...

Tulemusena tekitatakse kataloogid talv, suvi ja sygis.

Kui te omate makrot nimega init, täidetakse see automaatselt peale kaugesse masinasse sisselogimist.

Failinimedega manipuleerivad käsud

Allkirjeldatud käskude nmap, trans, case, sunique ja runique abil saab kontrollida, kuidas teisendatakse FTPga kopeerimisel failinimesid.

Määrang kehtib uue määranguni.

nmap - kopeeritavate failide nimede teisendus

Failinimede punktidega eraldatud osad on muutujate $1, $2 jne väärtuseks.

ftp> nmap $1.$2 $1.html

Tulemusena saab antud juhul failinimest 'talv.htm' nimi 'talv.html'.

ntrans - nimedes olevate sümbolite teisendus

Toimib analoogselt programmiga tr. Failinimedes esinevad tähed asendatakse ettemääratud skeemi alusel

ftp> ntrans gif GIF

Tulemusena muutub nimi 'talv.gif' nimeks 'talv.GIF'. case - suurtähtede vastavateks väiketähtedeks teisendus

ftp> case

Tulemusena saab nimest 'TALV.JPG' nimi 'talv.jpg'

runique, sunique - failinimede unikaalsuse tagamine

Kui teil on kahtlus, et kopeeritava faili nimega fail võib sihtkataloogis juba olemas olla, kasutage käske:

receive unique - kohalikku arvutisse kopeeritava faili nimele lisada vajadusel järjekorranumber

ftp> runique

send unique - kaugesse arvutisse kopeeritava faili nimele lisada vajadusel järjekorranumber

ftp> sunique

Kui teil oli kohaliku arvuti kataloogis juba olemas fail talv.gif ja kaugest masinast kopeerisite samanimelisi faile, salvestati need kohalikku arvutisse nimedega: talv.gif.1, talv.gif.2 talv.gif.3 jne.

Piiks

Kui te soovite, et arvuti piibitaks peale iga andmevahetust, andke käsk

ftp> bell

Peale järjekordset käsku bell piibitamine lõpeb.


Andmevahetuse kulgemise jälgimine ja FTP seansi olek

Hea kombe kohaselt UNIXi programmid ekraanile palju ei kirjuta. Kui te aga soovite jälgida failide ülekandmise progressi, andke korraldus tick või hash. Need ja paljud teised korraldused toimivad lülitina. Käsu esmasel sisestamisel määrang aktiviseeritakse ja järgmisel sisestamisel deaktiviseeritakse.

Kui soovite näha kõiki määranguid, andke käsk status:

ftp> status
Connected to ftp.zoo.tartu.ee.
No proxy connection.
Mode: stream; Type: binary; Form: non-print; Structure: file
Verbose: off; Bell: off; Prompting: on; Globbing: on
Store unique: on; Receive unique: on
Case: on; CR stripping: on
Ntrans: (in) gif (out) GIF
Nmap: (in) $1.$2 (out) $1.html
Hash mark printing: off; Use of PORT cmds: on
Tick counter printing: on
Macros:
	pildid

selgitused:

mode, form ja structure on kasutajast sõltumatute väärtustega ja seetõttu ei paku nad praktilist huvi 
verbose - näitab detailselt, kuidas klient ja server suhtlevad 
glob - käsitleb malle mallidena või otseses tähenduses 

Kui ftp käivitada võtmega -d

bash~$ ftp -d ftp.zoo.tartu.ee

siis näete detailselt, kuidas suhtlus kahe masina vahel toimub.

Poolelijäänud kopeerimise jätkamine

Suurte failide kopeerimisel pole harv, et ühendus vahepeal katkeb. Osa baite on kopeerunud ja failiks salvestatud. Arvatavasti soovite ühenduse uuesti luua ja jätkata kopeerimist poolelijäänud kohast. Osutub, et see on tõesti võimalik käsu reget abil:

ftp> get suurfail
Connection closed because of low gravity.
ftp> open ftp.zoo.tartu.ee
ftp> reget suurfail

Teine võimalus poolelijäänud faili lõpuni tuua, on kasutada käsku restart

ftp> restart 345000
ftp> get suurfail

Sel juhul jätkatakse kopeerimist suurfaili 345001. baidist. Automaagiline pakkimine serveris

Efektiivsem on kopeerida tihedalt kokkupakitud andmeid. Kui kauges masinas on huvipakkuv, ent mahukas kataloogistruktuur, siis saab (mõnikord) kopeerimisel kogu struktuuri kauges masinas arhiveerida ja arhiivi kokku pakkida. Selleks tuleb vajaliku faili või kataloogi nimele get käsku andes lisada ."tar.gz"

ftp> get maakaardid.tar.gz

Seepeale käivitab kauge arvuti FTP server enne faili kopeerimist programmi tar

tar zcf - maakaardid 

mille väljund suunatakse ftp programmi. Kohalikku arvutisse tekib kokkupakitud arhiiv.

Kuna see on FTP serveri lisavõimalus, siis ei pruugi iga server nii käituda.

Anonüümne FTP

Paljud FTP serverid lubavad teatud kataloogides sisalduvale ligi ka neid, kellel pole antud süsteemis kasutajatunnust. Sellist teenust nimetatakse anonüümseks FTP-ks ja see on üks levinuim moodus Internetis andmeid vahetada. Tavaliselt lubavad anonüümsed FTP serverid andmeid alla, aga mitte üles laadida.

Kuivõrd suured ja tuntud anonüümsed FTP serverid on tihti väga koormatud, eriti teatud ajal ööpäevas, siis tuleks mõistvalt suhtuda teadetesse: 'Maksimaalne kasutajate arv on hetkel täis. Go home.'. Taoliste probleemide leevendamiseks on populaarsetest serveritest loodud peegeldused (ingl. k. mirror). Peeglites on üleval sama kataloogistruktuur; tihti jõuavad uued andmed peeglitesse väikese hilinemisega.

Anonüümse FTP serveriga suhtlemine toimub samamoodi kui tavalise FTP serveriga. Sisselogimisel on kasutajanimeks 'ftp' või 'anonymous' ja parooliks, Teie e-posti aadress, nt 'priit@zoo.tartu.ee'. Külastaja e-posti aadress on anonüümse FTP serveri administraatorile võimalus analüüsida serveri kasutust.

Kui te tegutsete tuttavas FTP serveris, siis te tõenäoliselt teate, mis laadi andmed mingis failis asuvad. Anonüümse FTP serveri kasutamisel on abiks, kui teate, et:

  • kataloogis on tavaliselt fail README, kus on kirjas kommentaarid teiste kataloogis asuvate failide kohta
  • failis ls-lR on UNIXi käsu ls -lR väljund, so kõikide kataloogistruktuuri failide nimed
  • faili nime lõpus olev .tar viitab tar'i arhiivile
  • faili nime lõpus olev .Z viitab compress'iga pakitud failile
  • faili nime lõpus olev .gz viitab gzip'iga pakitud failile
  • faili nime lõpus olev .bz2 viitab bzip2'ga pakitud failile

FTP üle TLS/SSL

Debian GNU/Linux sisaldab paketti ftp-ssl, mille paigaldamiseks tuleb öelda apt-get install ftp-ssl

FreeBSD's on portsude ftp harus pakett bsdftpd-ssl millega tuleb lisaks TLS/SSL toega ftp serverile kaasa ka ssl toega sarnane utiliit

Graafiline ftp klient gFTP

gFTP paigaldamiseks sobib öelda

 # apt-get install gftp

Programmi kasutamine võiks välja paista nt selliselt

Gftp-1.gif

Kasulikud lisamaterjalid