mirror2ftp

(6.1.2013, avainsanat: bash, lftp, skripti, ftp, siirto)

lftp on tiedostonsiirto-ohjelma joka mahdollistaa tiedostojen rsync-tyyppisen siirron etäpalvelimille kun rsync:ä ei ole mahdollista käyttää. mirror2ftp on komentorivikuori (bash-skripti) jonka tarkoitus on yksinkertaistaa (hivenen) lftp-ohjelman käyttöä nimenomaisesti ftp-palvelimia vastaan.

Graafisiin ohjelmiin tottuneiden kannattaa käyttää esim. FileZillaa, gftp:tä tai vastaavaa graafista asiakasohjelmaa.

vaatimukset

  1. linux (ubuntu, debian, debian-johdannaiset, centos, redhat ym.)
  2. bash komentorivitulkki
  3. GNU coreutils 7.4
  4. lftp (4.3.3) tiedostonsiirto-ohjelma

asennus

  1. Varmista että lftp on asennettuna koneellesi (yum, aptitude, synaptic etc.)
  2. Lataa skripti omalle koneellesi (tarkista sisältö että tiedät mitä tuli ladattua).
  3. Kopioi terminaalissa skripti hakemistoon /usr/local/bin (syötä lihavoitu, kenoviiva välissä tarkoittaa että seuraava rivi kuuluu samaan riviin):



    user@teac:~/Downloads$ sudo cp mirror2ftp.sh \
    /usr/local/bin/mirror2ftp

    [sudo] password for user: [your-passwd-here]




  4. Aseta skriptille ajo-oikeudet:



    user@teac:~/Downloads$ sudo chmod ugo+x /usr/local/bin/mirror2ftp
    user@teac:~/Downloads$ ls -l /usr/local/bin
    total 28
    :
    -rwxr-xr-x. 1 root root 5426 May 19  2013 mirror2ftp
    :




  5. Tee testiajo:



    user@teac:~/Downloads$ mirror2ftp

    Entering mirror2ftp interactive mode.
    Press CTRL+C at any time to cancel.

    Give username for ftp site login and press [ENTER]:
    [CTRL]+[C]



    Jos näkyviin tulee jotain muuta (tavallisesti virheilmoitus), pitää ympäristöä korjata vastaavasti. Skripti tarkistaa että löytyykö lftp-ohjelmaa ja valittaa mikäli sitä ei hakemalla löydy. Google/Bing/tmv. on tässä todennäköisesti ystäväsi.

    Avusteen saa komentorivioptiolla -h:



    user@teac:~/Downloads$ mirror2ftp -h

    Usage:

    mirror2ftp [-u|--username] username] [[-p|--password] password]
                 [-d|--delete] [-v|--verbose]
                 [[-s|--source] local-directory]
                 [[-f|--ftp] ftp-server-name]
                 [[-t|--target] site-directory]

    Arguments are:

        [-u|--username [username]
            account name for ftp site
        [-p|--password password]
            password for account
        [[-s|--source] local-directory]
            local directory from which to mirror (a source)
        [[-f|--ftp ftp-server-name]
            target ftp site (DNS) name or IP address
        [[-t|--target site-directory]
            target ftp site directory
        [-d|--delete]
            delete target files which do not exist in source (not default)
        [-h|--help]
            show these instructions
        [-v|--verbose]
            show more detailed output



käyttö

Skriptillä voi esim. päivittää www-palvelimella olevia veppisivuja joihin on sallittu vain ftp. Sinällään tämä luonnistuu graafisilla ohjelmilla hyvin, mutta tässä siirretään rsync-tyylisesti vain muuttuneet tiedot, mikä nopeuttaa siirtoa ja vähentää kaistan käyttöä.

Esim. (kenoviiva tarkoittaa komentorivin jatkumista)


user@teac:~/www$ mirror2ftp -v -d -u [your-username-here] \
    -p [your-passwd-here] \
    -s /home/www/domainname/html/ \
    -f ftp.domainname.com \
    -t public_html/


Jos jotain oleellista tietoa jättää pois komentorivioptioista, skripti siirtyy interaktiiviseen tilaan ja kyselee tarvittavat tiedot.

Jos tiedostojen poisto-optiota (-d) ei anneta, tiedostot kumuloituvat kopiointipäähän.

Huomaa että kohdehakemiston sisältö kopioidaan lähdehakemistoon. Eli yllä olevassa esimerkissä hakemiston ...domainname/html/ sisältö kopioidaan hakemistoon public_html/. Hakemisto html ei siis tule hakemiston public_html alle.

Huomaa myös kohdehakemiston suhteellinen osoite (tapauskohtaisesti voit joutua myös kirjoittamaan koko URLin). Tarkista toiminta ensin pienellä siirtomäärällä; eritysesti poisto-optio -d eli kohdepään tiedostojen poisto voi tällöin aiheuttaa ikäviä yllätyksiä.

skripti

Versio 0.1 (18.5.2013)

Tiedostona: mirror2ftp.sh

kommentteja

Last edited: 25.08.2014