ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ ΜΕ ΤΟ FTP

To FTP είναι ακρωνύμιο για File Transfer Protocol. Ο σκοπός ύπαρξής του είναι να μεταφέρει αρχεία από 1 μηχανή σε άλλη (upload / download) και αποτελεί τη τρίτη βασική υπηρεσία του Internet. Χρησιμοποιείται με παρόμοιο τρόπο με το telnet, αλλά έχει πολλές επιλογές. Επειδή ο καλύτερος τρόπος για να το δείτε είναι με παράδειγμα, θα παραθέσω μιά "διαδρομή" με αυτό: (σχόλια παρατίθενται ανάμεσα στις εντολές, καθώς και στο δεξιό μέρος μιάς εντολής).

2:44pm 2 ~ >ftp

ftp> open  princeton.edu
Connected to princeton.edu.				Ξέρει τη μηχανή από το όνομά της...
220-Princeton.EDU FTP server (Widener 3.55) ready.	Ακολουθούν μηνύματα..
Παρατηρήστε ότι κάθε είδος μηνύματος από το FTP έχει έναν τριψήφιο αριθμό μπροστά του
220-Report any problems to ftp@Princeton.EDU.
220-If you are on an IBM mainframe and you are having trouble
220-logging into Princeton.EDU, we suggest you execute
220-	term chardel off
220 on your machine and then reestablish the ftp connection to Princeton.EDU.
Εδώ είναι μιά ενδιαφέρουσα για πολλούς λεπτομέρεια: αυτή η μηχανή (όπως κι άλλες πολλές στο Internet) επιτρέπει σε χρήστες που δεν έχουν λογαριασμό σε αυτή να μεταφέρουν αρχεία από και πρός αυτή. Αυτός ο τρόπος αποκαλείται "anonymous ftp", και θα δείτε παρακατω γιατί:

Name (princeton.edu:nfotis): anonymous
Ο λογαριασμός 'anonymous' είναι ειδικός όπως θα δείτε. Η μηχανή ζητάει παρασύνθημα. Επειδή δεν έχουμε λογαριασμό σε αυτή τη μηχανή, θεωρείται καλή συμπεριφορά να δίνουμε την ηλεκτρονική μας διεύθυνση, πχ. user_name@theseas.ntua.gr Ο βασικός λόγος είναι για να κάνουν πιό εύκολη τη παρακολούθηση γιά τη περίπτωση πχ. που υπάρξει κάποιο πρόβλημα με το FTP ή να ξέρουν ποιός πήρε το πακέτο που μεταφέρει αυτή η μηχανή, κλπ. Γενικά, θεωρείται καλή συμπεριφορά να δίνετε την ηλεκτρονική σας διεύθυνση.

331 Guest login ok, send "user@host" as password. Password: Το παρασύνθημα δεν φαίνεται, για λόγους ασφαλείας. Και τελικά μας καλωσορίζει στον ειδικό χώρο γιά όσους κάνουν anonymous ftp. Δεν επιτρέπεται (από το σύστημα) να πηγαίνουμε στον χώρο που είναι οι κανονικοί χρήστες. Φυσικά, αν μπαίναμε σαν κανονικοί χρήστες, θα μας πήγαινε στον χώρο του λογαριασμού μας (home directory).

230 Guest login ok, access restrictions apply.
ftp>pwd			Ζητάμε να μάθουμε σε ποιό σημείο είμαστε στη μηχανή του Princeton
/ftp is the current directory		Μας λέει η απομακρυσμένη μηχανή που βρισκόμαστε
ftp>dir				Τώρα μπορούμε να ""σκαλίσουμε"" το μέρος.
				Κοιτάμε τι έχει εδώ που είμαστε
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 11
drwxr-xr-x  4 root     1             512 Jan 21 15:55 archives
drwxr-xr-x  2 root     1             512 Aug  4  1990 bin
drwxr-xr-x  2 root     1             512 Aug  3  1991 dev
drwxr-xr-x  2 root     1             512 Aug  4  1990 etc
drwxr-xr-x  2 root     0             512 Jul 10  1990 lost+found
drwxrwxrwx 43 ftp      45           3584 Mar 31 14:09 pub
drwxr-xr-x  2 102      1             512 Feb 18 14:05 sendmail.satellite
drwxr-xr-x  3 root     1             512 Aug  4  1990 usr
226 Transfer complete.
509 bytes received in 0.6 seconds (0.83 Kbytes/s)

ftp>cd pub			Το pub directory είναι ένα συμβατικό μέρος γιά τους χρήστες του anonymous ftp
250 CWD command successful.	Πηγαίνουμε εκεί
ftp>dir				Κοιτάμε τι έχει εδώ
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 28374
-rw-r--r--  1 ftp      45              0 Aug 12  1990 .pnewsexpert
-rw-r--r--  1 ftp      45         399308 Jan 16  1989 2.20.ps
-rw-r--r--  1 ftp      45          58087 Jan 16  1989 2.20.ps.Z
-rw-r--r--  1 root     45         369880 Mar 23  1989 7.0-0015-csc1
drwxrwxrwx  2 ftp      45            512 Sep 17  1991 ASD
drwxrwxrwx 13 ftp      45            512 Jan 29 22:35 BT
-rw-rw-rw-  1 ftp      45          58535 Oct 21 20:07 CWISP-Draft-4.sea.hqx
-rw-r--r--  1 ftp      45          89984 Jul  5  1990 EulerBitmaps
-rw-r--r--  1 ftp      45          11008 Jul  5  1990 EulerMetrics
drwxrwxrwx 12 343      34           1024 Mar 14 16:03 Graphics
 ....
-rw-r--r--  1 ftp      45         129874 Mar 14 16:49 ls-lR.Z
 ....
και δεκάδες άλλα αρχεία.. Ενα αρχείο πoυ έχει το όνομα ls-lR.Z είναι συνηθισμένο φαινόμενο: αποτελεί την έξοδο του ls -lR του Unix, και είναι ουσιστικά μιά λίστα με όλα τα αρχεία που είναι διαθέσιμα εδώ μέσα. Θα μπορούσατε να πάρετε την ίδια λίστα εκτελώντας 'ls -lR' μέσα στο FTP, αλλά θα έπαιρνε ΠΟΛΥ χρόνο.

Βλέπετε ότι υπάρχουν μερικά αρχεία με περίεργες καταλήξεις (.Z, sea.hqx, κτλ.). Είναι κι αυτό μιά από τις συμβάσεις του FTP: πολλά αρχεία είναι συμπιεσμένα. Ακολουθεί ένας μικρός οδηγός με μερικές τέτοιες καταλήξεις, και το όνομα του προγράμματος (οι κεφαλαίοι χαρακτήρες) που το διαβάζει:

 .Z           Συμπιεσμένο; εξάγεται με το uncompress
 .tar.Z        Συμπιεσμένο 'Tape ARchive'; Αποσυμπιέστε, μετά untar ή tar -xvf
 .gz or .z    Gnu gzip; χρησιμοποιείστε το gunzip
 .sit         (Mac) StufIt archive
 .zip         (Unix,PC,Amiga) Εξαγωγή με το Zip ή το Unzip
 .zoo         (PC,Unix,Amiga) Αλλο ένα πρόγραμμα αρχειοθέτησης/συμπίεσης
 .lha         (Amiga,Unix) Χρησιμοποιείστε το lha γιά εξαγωγή
 .exe         (PC) Συνήθως αρχεία που εξάγονται μόνα τους.
 .uue or .UUE Μεταφέρτε τα σαν κείμενο, χρησιμοποιείστε το uudecode γιά μετατροπή
		σε δυαδικό αρχείο.
 .hqx         (Mac) BinHex φορμά, μεταφέρεται σαν κείμενο.
Αν συναντήσετε μιάν κατάληξη που δεν είναι γνωστή σας, κοιτάξτε αν υπάρχει κανένα σχετικό README αρχείο που να εξηγεί τι είναι.

250 CWD command successful.
ftp>dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 0		Αδειο...
226 Transfer complete.
9 bytes received in 0.5 seconds (0.017 Kbytes/s)
ftp> cd ..		Ανεβαίνω ένα επίπεδο πάνω...
250 CWD command successful.
ftp>dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 3781
drwxr-xr-x  4 343      34            512 Sep 29  1991 GraphicsGems
drwxr-xr-x  2 343      34            512 Jul 25  1991 Images
drwxr-xr-x  3 343      34            512 Feb  3 20:39 Papers
-rw-r--r--  1 343      34           1154 Feb  8 07:15 README
drwxr-xr-x  2 343      34            512 Nov 18 20:07 RTNews
drwxr-xr-x  2 343      34            512 Sep  7  1991 Rayinput
-rw-r--r--  1 343      34          47883 Dec 18  1990 SPD.3.0.shar.Z
-rw-r--r--  1 343      34          32025 Dec  5  1989 colorquant.shar
-rw-r--r--  1 343      34         256983 Jul 10  1990 fbm.tar.Z
drwxrwxrwx  2 343      34            512 Mar 28 15:50 incoming
κι άλλα αρχεία... Παρατηρήστε ότι το incoming (εισερχόμενα) directory επιτρέπει σε όλους την εγγραφή. Αυτό το όνομα αποτελεί μιά σύμβαση, και είναι το μέρος όπου κάποιος "κατεβάζει" πράγματα γιά τη συγκεκριμένη μηχανή.

Σημείωση: καλό είναι να ρίχνετε μια ματιά (δηλ. να παίρνετε) πρώτα στο αρχείο README σε κάθε directory που φαίνεται να έχει κάτι ενδιαφέρον. Ετσι θα γλιτώσετε από σπατάλη χρόνου επειδή πήρατε κάτι που δεν ήταν αυτό που θέλατε....

ftp>close		Βγαίνουμε απο το μηχάνημα, αλλά όχι από το πρόγραμμα του FTP.
221 Ciao.
ftp>
ftp>open macedonia	Μπαίνω σε μιά μηχανή του ΕΜΠ...
Connected to macedonia.ntua.gr.
220 macedonia FTP server (Version 16.2 Thu Jan 17 03:41:57 GMT 1991) ready.
Name (macedonia:nfotis): nfotis
331 Password required for nfotis.
Password:
230 User nfotis logged in.	Επειδή μπαίνω σαν κανονικός χρήστης, με βάζει στο directory μου
ftp>dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 14300
-rw-r--r--   1 nfotis   other        791 Oct 10 14:05 .aliases
-rw-r--r--   1 nfotis   other         92 Oct 10 14:04 .aliases.sysv
drwxr-xr-x   2 nfotis   other        512 Dec  8 15:50 .bin.hp-850
drwxr-xr-x   2 nfotis   other        512 Dec  8 14:23 .bin.sun3		κτλ...
.ft C
ftp>lcd src		Αλλάζω directory στην τοπική μηχανή (phgasos)
Local directory now /n/phgasos/var/home/ugrads/nfotis/src
ftp>cd src		Αλλάζω directory στην απομακρυσμένη μηχανή (macedonia).
250 CWD command successful.		Τυχαίνει να έχουν το ίδιο όνομα...
			Κοιτάω ποιό είναι το τρέχον directory στην remote μηχανή
ftp> pwd
257 "/home/users/ugrads/nfotis/src" is current directory.
Αλλάζω σε binary transfer mode, δηλαδή καμμιά αλλαγή στα δεδομένα που μεταφέρονται. Αν η μεταφορά αφορούσε αρχεία κειμένου από Unix σε MS-DOS (πχ.), θα χρειαζόταν να ζητήσουμε ASCII mode.

ftp>bin			
Αντί να χρειαστεί να γράψω ολόκληρη τη λέξη 'binary', το ftp καταλαβαίνει την εντολή από τους πρώτους χαρακτήρες που ξεχωρίζουν αυτή την εντολή από άλλες

200 Type set to I.
ftp>put taxlaw.tar.Z		Στέλνω από την τοπική μηχανή στην απομακρυσμένη ένα αρχείο
200 PORT command successful.
150 Opening BINARY mode data connection for taxlaw.tar.Z.
226 Transfer complete.
local: taxlaw.tar.Z remote: taxlaw.tar.Z
4774 bytes sent in 0.06 seconds (77 Kbytes/s)
ftp>del taxlaw.tar.Z	Αλλαξα γνώμη, και σβήνω το αντίγραφο που άφησα στην απομακρυσμένη μηχανή"
250 DELE command successful.
ftp>dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 4
-rw-r--r--   1 nfotis   users        673 Sep  6  1991 split.c
226 Transfer complete.
72 bytes received in 0.52 seconds (0.14 Kbytes/s)
Μπορώ στην ίδια γραμμή να στείλω/πάρω περισσότερα από ένα αρχεία Εδώ παίρνω πολλαπλά αρχεία με την mget (Multiple GET). Η mget ρωτάει κάθε φορά αν θέλετε το 1ο, 2ο, ... αρχείο, αλλά αν θέλετε να μη σας ρωτάει γιά το κάθε αρχείο, μπορείτε να χρησιμοποιήσετε την εντολή prompt.

ftp>mget *
mget split.c? y
200 PORT command successful.
150 Opening BINARY mode data connection for split.c (673 bytes).
226 Transfer complete.
local: split.c remote: split.c
673 bytes received in 0.051 seconds (13 Kbytes/s)
Εδώ λέω ότι θέλω η μεταφορά να γίνει σε ASCII mode, δηλαδή: Οι χαρακτήρες τέλους γραμμής θα μεταφράζονται ανάλογα με τις μηχανές στα 2 άκρα της σύνδεσης Το σύνολο των χαρακτήρων θα μεταφράζεται, πχ. από EBCDIC σε ASCII και τ'ανάπαλιν. Θα μπαίνουν οι κατάλληλοι χαρακτήρες γιά το τέλος αρχείου, κτλ. Ο τρόπος αυτός συνιστάται ΜΟΝΟ για μεταφορά κειμένων μεταξύ διαφορετικών υπολογιστικών συστημάτων. Γενικά, μεταξύ UNIX μηχανών θεωρείται ασφαλής η χρήση του binary mode γιά κάθε περίπτωση.

ftp>asc
200 Type set to A.
ftp>put loop.c	Αντίστοιχη της get είναι η put, ενώ για την mget η mput (Multiple PUT)"
200 PORT command successful.
150 Opening ASCII mode data connection for loop.c.
226 Transfer complete.
local: loop.c remote: loop.c
819 bytes sent in 0.066 seconds (12 Kbytes/s)
ftp>help		Ζητώ βοήθεια από το FTP"
Commands may be abbreviated.  Commands are:

!               cr              macdef          proxy           send
$               delete          mdelete         sendport        status
account         debug           mdir            put             struct
append          dir             mget            pwd             sunique
ascii           disconnect      mkdir           quit            tenex
bell            form            mls             quote           trace
binary          get             mode            recv            type
bye             glob            mput            remotehelp      user
case            hash            nmap            rename          verbose
cd              help            ntrans          reset           ?
cdup            lcd             open            rmdir
close           ls              prompt          runique

ftp>help bin	Ζητώ περισσότερες λεπτομέρειες για την υποεντολή 'bin'
binary          set binary transfer type
ftp>quit
221 Goodbye.
Οσοι βρίσκουν βαρετό το απλό FTP, υπάρχει το "ncftp" με πιό εφφετζίδικο στυλ λειτουργίας, καθώς και προγράμματα που λειτουργούν κάτω από X Windows και παρέχουν ένα πιό εκσυγχρονισμένο στυλ στο FTP.

Υπάρχουν πάνω από 2.000 anonymous FTP servers, και ο αριθμός μεγαλώνει καθημερινά. Μερικοί από τους πιό γνωστούς είναι:

Επειδή το φορτίο στις τηλεπικοινωνιακές γραμμές και τον υπολογιστή που λειτουργεί σαν server αυξάνει με τον αριθμό των χρηστών που τα χρησιμοποιούν, υπάρχει η τεχνική mirroring: ένας ειδικευμένος server σε Amiga πχ. φροντίζει να μένει σε συγχρονισμό με μερικούς άλλους (ότι κατεβάζει κάποιος στον έναν, αντιγράφεται αυτόματα και στους άλλους). Ετσι, αρκεί να συνδεθεί κάποιος με τον πιό κοντινό server (από άποψη ταχύτητας) και παίρνει αυτό που χρειάζεται, χωρίς να επιβαρύνει την ειδικευμένη μηχανή (το wuarchive.wustl.edu, έχει 2 γραμμές των 1.5 Mbits/sec, και είναι μονίμως στο όριο των 150 ταυτόχρονων ανώνυμων χρηστών) ή το δίκτυο.

Μερικοί καλοί ευρωπαϊκοί servers είναι οι ακόλουθοι (λόγω της τεχνικής mirroring που αναφέραμε επάνω έχουν μιάν ικανοποιητική ποικιλία από όλα τα είδη προγραμμάτων):

nic.funet.fi
(Φινλανδία)
garbo.uwasa.fi
(Φινλανδία)
irisa.inria.fr
(Γαλλία, INRIA)
info.cern.ch
(Ελβετία, CERN)
Πολλές εταιρείες επίσης διαθέτουν προγράμματα μέσω του Internet, λόγω χαμηλού κόστους διανομής. Μερικά παραδείγματα:

Μερικά κλασικά μέρη γιά μαθηματικά προγράμματα είναι τα

ftp.research.att.com
(Bell Labs, AT&T)
ftp.ornl.gov
(Oak Ridge National Lab.)
Και ένας Θεός μόνο ξέρει τι άλλο ακόμα υπάρχει μέσα στο Internet....

Πριν πάτε να πάρετε όλα αυτά τα πράγματα, βεβαιωθείτε πρώτα ότι δεν υπάρχουνε εδώ (είναι πολύ συνηθισμένο να φέρνουνε νέοι χρήστες ένα πακέτο, μόνο γιά να ανακαλύψουν ότι έχει ήδη εγκατασταθεί), κι ότι είναι απαραίτητα γιά σας. Η διαδικασία του σχετικού ελέγχου είναι απλή (μιλάμε γιά το Εργαστήριο Λογισμικού):

locate file_name_you_want_to_find (πχ. locate gnuplot)
και αν υπάρχουν αρχεία που έχουν αυτό το όνομα μέσα στις μηχανές του Εργαστηρίου, θα σας τα απαριθμήσει.

Αν δεν βρήκατε τίποτα όμοιο (και ψάχνετε γιά πχ. ένα πρόγραμμα γιά PCs), ελέξτε αν έχει ήδη έρθει μέσα από το USENET (δείτε παρακάτω γιά μιά εισαγωγή στο USENET). Πηγαίνετε στο directory /n/kentayros/var/usenet. Εκεί είναι τα προγράμματα που έρχονται μέσα από το USENET, τα οποία αποθηκεύονται αυτόματα. Υπάρχουν αρχεία με τον τίτλο Index, που είναι μιά λίστα των αρχείων που περιλαμβάνονται στους υποκαταλόγους κάτων από αυτά (και κάθε υποκατάλογος περιέχει τη δική του λίστα, μέχρι το επίπεδο των επιμέρους πακέτων).

Αν αποτύχει και αυτό, *τότε* πηγαίνετε να το πάρετε μέσω FTP. Πάντα να θυμάστε: είναι κι άλλοι στην ίδια γραμμή, οπότε το να παίρνετε ταυτόχρονα από 5 μηχανές με ισάριθμα FTP είναι κακή συμπεριφορά προς τους συναδέλφους σας, που μπορεί να θέλουν απλά να μπούν σε μιά μηχανή στο εξωτερικό (το FTP καταπονεί αρκετά τη γραμμή, ειδικά όταν υπάρχουν περισσότερα από 2-3).