FTP - prenos suborov z ineho stroja

(P.Sincak)

Co je to FTP?

FTP (File Transfer Protocol) je program na prenos suborov. Poskytuje mi zakladny funkcny prostriedok na prenos suborov medzi pocitacmi.

Ako vyvolam a ako ukoncim FTP?

So vzdialenym strojom sa spojim zadanim prikazu v UNIX-e:
ftp <stroj>
Po zadani login-u a hesla sa objavi napoved ftp> a mozem zadavat jednotlive prikazy FTP. Pomocou prikazu help ziskam zoznam vsetkych prikazov, ktore mozem v ramci aktualnej instalacie FTP pouzivat.

Pracu s FTP ukoncim zadanim prikazu quit. Prikazom close ukoncim iba spojenie so vzdialenym pocitacom, ale FTP program mi bezi a mozem sa teda spojit s inym vzdialenym strojom prikazom open <stroj>. Pri volani FTP mam moznost ovplyvnit jeho cinnost zadanim klucov:

ftp <kluce> <stroj>
Vyznam klucov je nasledovny:
-d povoluje ladenie (debug)
-i zakaze priebezne vypisy pocas prenosu viacerych suborov
-v vypisuje podrobne informacne vypisy a prenosovu statistiku
-g potlaci znak * ako znak viacnasobnosti
-t povoli trasovanie paketov
-n ignoruje subor .netrc (su v nom ulozene informacie o mojej poslednej praci s prislusnym FTP servrom a tie sluzia ako defaulty pri novom volani)
Aktualny stav programu FTP mozem zistit pomocou prikazu status.

Ako pracujem s katalogmi v FTP?

Pre manipulaciu s katalogmi mi vacsina instalacii FTP ponuka nasledujuce prikazy:
  • cd <katalog>
    (change directory) zmenim katalog na vzdialenom stroji
  • lcd
    (local change directory) zmenim katalog na mojom stroji (niekedy musim pouzit na tento ucel prikaz !cd)
  • ls
    ziskam zoznam suborov v aktualnom katalogu na vzdialenom stroji (obvykle mozem pouzit aj ekvivalentny prikaz dir)
  • ls -l
    ziskam zoznam suborov v aktualnom katalogu s plnou informaciou o suboroch na vzdialenom stroji
  • lls
    ziskam zoznam suborov v aktualnom katalogu na mojom stroji (niekedy musim pouzit na tento ucel prikaz !ls)
  • pwd
    ziskam meno aktualneho katalogu na vzdialenom stroji
  • mkdir <kata>
    vytvorim novy podkatalog v aktualnom katalogu na vzdialenom stroji (ak mam na to pravo)
  • rmdir <katal>
    zrusim prazdny podkatalog v aktualnom katalogu na vzdialenom stroji (ak mam na to pravo)
  • delete <sub>
    vymazem subor na vzdialenom stroji (ak mam na to pravo)
  • mdelete <s*r>
    vymazem subory na vzdialenom stroji (ak mam na to pravo); v argumente mozem pouzit hviezdickovu konvenciu; vyzaduje sa moje potvrdenie vymazania kazdeho suboru

    Ako budem posielat subor(y) na vzdialeny pocitac?

    Jeden subor prenesiem pomocou prikazu:
    put <subor_tu> <subor_tam>
    ked nezadam druhy argument, subor sa ulozi pod povodnym menom. Viacero suborov mozem preniest pomocou prikazu:
    mput <subory>
    pricom v argumente mozem pouzit hviezdickovu konvenciu. Standardne system ziada potvrdenie pre kazdy subor (mozno zrusit prikazom prompt).

    Pri pouziti oboch prikazov si musim byt isty, ze mam pravo zapisu na vzdialenom stroji.

    Standardne sa predpoklada prenos textovych suborov (bez diakritiky), teda rezim ascii. Pri prenose binarnych suborov, komprimovanych suborov a suborov s diakritikou a atributmi (napr. z WordPerfect-u) musim prepnut prikazom bin na binarny mod. Na textovy mod sa prepnem spat prikazom ascii.

    Ked chcem mat prehlad o postupe prenosu udajov, zadam vopred prikaz hash.Vdaka nemu sa pri prenose postupne vypisuju znaky # (pri jeho zadani je mi oznamene, na kolko bajtov sa vypise jeden znak).


    Ako mozem prenasat subory zo vzdialeneho pocitaca?

    Jeden subor prenesiem pomocou prikazu:
    get <subor_tam> <subor_tu>
    ked nezadam druhy argument, subor sa ulozi pod povodnym menom. Viacero suborov mozem preniest pomocou prikazu:
    mget <subory>
    pricom v argumente mozem pouzit hviezdickovu konvenciu. Standardne system ziada potvrdenie pre kazdy subor (mozno zrusit prikazom prompt).

    Standardne sa predpoklada prenos textovych suborov (bez diakritiky), teda rezim ascii. Pri prenose binarnych suborov, komprimovanych suborov a suborov s diakritikou a atributmi (napr. z WordPerfect-u) musim prepnut prikazom bin na binarny mod. Na textovy mod sa prepnem spat prikazom ascii. Ked chcem mat prehlad o postupe prenosu udajov, zadam vopred prikaz hash.Vdaka nemu sa pri prenose postupne vypisuju znaky # (pri jeho zadani je mi oznamene, na kolko bajtov sa vypise jeden znak).


    Kedy pouzijem GET a kedy PUT?

    Musim si vzdy dobre uvedomit, kde startujem FTP program. Tam, kde ho startujem, tam je moj lokalny stroj. Tato poznamka je dolezita v pripade, ked som sa prihlasil na iny stroj pomocou TELNET a na nom vyvolam FTP na svoj domovsky pocitac (tam, kde som TELNET startoval).

    Ako si pozriem kratky subor bez toho aby som ho preniesol?

    Vacsina FTP programov ma prikazy
    page <subor_tam>
    alebo
    more <subor_tam>
    Je potrebne upozornit, ze niektore verzie FTP taketo prikazy nemaju (zistim pomocou help) a vtedy mi neostava nic ine ako preniest subor na moj stroj.

    Ako spustim proces na pozadi a odhlasim sa?

    Pouzijem program NOHUP, teda FTP startujem z UNIX-u prikazom:
    nohup ftp <stroj>
    Po vyvolani prenosu prikazom mget alebo mput mozem proces ftp zastavit stlacenim Ctrl-Z, a potom znova spustit na pozadi prikazom bg. Potom sa odhlasim zo stroja. Proces prenosu bude pokracovat aj po mojom odhlaseni.

    Naznaceny proces robim vo svojom 'pracovnom' UNIX-ovskom prostredi v pripade, ze nemam v umysle dalej pracovat v UNIX-e. V opacnom pripade sa zo svojho'pracovneho' prostredia opatovne prihlasim na ten isty stroj, urobim naznacene ukony (vratane odhlasenia) a pokracujem dalej v 'pracovnom' prostredi.


    Ako prenasat rozsiahle subory?

    Pri prenose rozsiahleho suboru sa moze stat, ze ma pocitac bude chciet odhlasit automaticky z dovodu ze "akoze nepracujem na stroji", resp. sleduje sa tzv. Idle time. Tento problem mozem obist jednoducho tym, ze proces ftp zastavim stlacenim Ctrl-Z a potom znova spustim na popredi prikazom fg alebo na pozadi prikazom bg. Po takomto ukone sa pocitadlo Idle time vynuluje. Ked chcem prenasat velke objemy dat, pouzijem radsej NOHUP (Ako spustim proces na pozadi a odhlasim sa? ).

    Ktore subory musim prenasat binarne?

    V binarnom mode musim prenasat komprimovane data (s priponou .Z), spustitelne programy ako aj subory, vytvorene niektorymi textovymi editormi (napr.WordPerfect, T602). Bezne texty ako aj PostScript subory mozem prenasat v ascii mode.

    Co je to anonymny server?

    Anonymny server je pocitac, kde sa mozem prihlasit na login anonymous, pricom heslom je obvykle moja e-mailova adresa. Po svete je velke mnozstvo odborne orientovanych anonymnych FTP servrov. Takymto servrom je napr. aj ccsun.tuke.sk.

    Zoznam anonymnych servrov mozem najst napriklad na anonymnom FTP servri nic.uakom.sk v subore services. Je pristupny aj cez GOPHER na nic.uakom.sk.


    Aky je rozdiel medzi programom FTP a NCFTP?

    Program NCFTP je vylepseny FTP program urceny na spajanie sa s anonymnymi FTP servrami. Program NCFTP za mna zada login: anonymous a doplni moju e-mailovu adresu ako heslo. Poskytuje vacsi komfort, napr. indikuje v percentach velkost uz prenesenej casti suboru.
    Inak pracujem s NCFTP analogicky ako s FTP.

    Co ked nemam dost miesta na lokalnom stroji na ulozenie suboru?

    Tento problem mozem vyriesit tak, ze pomocou lcd /tmp prejdem na /tmp adresar a tam je obvykle miesto - hoci len docasne.

    Mozem pouzivat makra v ramci FTP?

    Pomocou prikazu macdef si mozem nadefinovat makro: zadam jeho meno a za nim jednotlive prikazy, ktore ma makro obsahovat. Definiciu makra ukoncim riadkom s medzerou. Pomocou prikazu $ potom makro vyvolam.

    Ako mozem startovat proces prenosu vo vopred definovanom case?

    K tomuto zameru mozem vyuzit program at. Najprv vsak musim napisat c-shellovsky skript, v ktorom zadam pozadovane cinnosti napr.:

    a) prihlasit sa na pocitac ccsun.tuke.sk
    b) login bude anonymous a heslo moja E-mailova adresa
    c) nastavit sa na katalog imcoming/kkui/neural
    d) nastavit ascii mod prenosu
    e) preniest subor nn.faq na moje PC
    f) odhlasit sa.

    Skript bude mat dve casti. V prvej nastavim premenne c-shellu prikazmi set a v druhej prikazom echo presmerujem cez 'ruru' prikazy do programu FTP. Premenne 'volam' pomocou znaku $ a jednotlive prikazy oddelim znakom \. Pre uvedeny priklad bude mat skript tvar:

        #!/bin/csh -f
            set v_pocitac=ccsun.tuke.sk
            set prihlas=anonymous
            set heslo=sincak@ccsun.tuke.sk
            set adresar=/incoming/kkui/neural
            set subor=nn.faq
            echo" open $v_pocitac\
            user $prihlas $heslo\
            cd $adresar\
                   bin\
                    get $file\
                    quit" | ftp -n -i -v -d%
    Takto vytvoreny skript (napriklad v subore moj_ftp) musi byt spustitelny, co dosiahnem pomocou prikazu UNIX-u:
    chmod u+x moj_ftp
    Uvedeny skript mozem pouzit napriklad na realizaciu predpisanych cinnosti presne o 23:45. Dosiahnem to nasledujucim prikazom UNIX-u:
    at 23:45 moj_ftp
    Prikazom at -l vykonam kontrolu, ci skript bol zaradeny do fronty (vypisu sa vsetky procesy, ktore cakaju na vykonanie.

    V operacnom systeme SOLARIS existuje interaktivna forma zadania prikazu at (kurzivou su vyznacene napovede systemu):

                & at 23:45<Enter>
                    AT> moj_ftp<Enter>
                    AT> <Ctrl-D>
    Po samotnej realizacii prenosu dostanem v tomto pripade aj posle elektronicku postu s protokolom prenosu.

    Mozem preniest lubovolny subor z UNIX na MS-DOS?

    Mozem, ale musim dodrzat konvenciu MS-DOS o menach suborov (max. 8 znakove meno a 3 znakova extenzia). Ak mam na UNIX-e dlhsie meno bud mi ho FTP pri prenose oreze, alebo prenos neurobi. V takom pripade pouzijem prikaz get s dvomi argumentami (prvy je povodne meno v UNIX-e a druhy nove meno v MS DOS).