FTP (FILE TRANSFER PROTOCOL)
FTP (file transfer protocol), bir makinadan diğerine yapılan dosya transferinde en çok kullanılan yollardan biridir. İnternet desteği olan işletim sistemlerinin hepsinde (MS-DOS, Windows, OS/2 ... ) ftp, standart program olarak kullanıcıların hizmetine sunulmuş durumdadır. Linux altında da ftp desteği vardır.
FTP, dosyaları alabilmenizle birlikte istediğiniz adrese yollamanıza da izin verir. Eğer İnternet'e bağlıysanız ve Linux kullanıyorsanız, ftp vazgeçemeyeceğiniz bir program olacaktır.
2.2.1 Temel FTP Komutları
FTP, İnternet'e bağlı olan makinalarda anlam kazanır ve gücünü hissettirir. Saniyeler içinde onlarca dosya, yüzlerce kilobayt bilgi transfer edilebilir. FTP'ye başlamak için kullanabileceğiniz iki komut var. Birisi, standart ftp paketinden çıkan 'ftp' komutu, diğeri de 'ncftp' komutu. İkisinin de avantajları olmasına rağmen 'ncftp' nin kullanıcıya yönelik kullanım kolaylığı vardır, bu nedenle sizde 'ncftp' kullanın.
Bir FTP adresine bağlanmak için o adresin IP numarasını veya ismini bilmeniz yeterli. Örnek olarak çok geniş bir Linux arşivi olan linux.org.tr adresine bağlanmak için:
$ ftp linux.org.tr
yazın. Ekranda aşağıdaki gibi bir görüntü gelecektir. ncftp, ftp yapmak için gerekli olan kullanıcı kodunu ve şifreyi kendisi gönderir ve otomatik olarak karşıdaki adrese bağlanır. Eğer ftp kullanıyor olsaydınız, kullanıcı kodu için anonymous veya ftp, şifre için de e-posta adresini girmeniz gerekecekti.
linux:~$ ftp linux.org.tr
Connected to linux.org.tr.
220 metu FTP server (Version wu-2.4(1) Tue Aug 8 15:50:43 CDT 1996) ready.
Name (linux.org.tr:root): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230-Welcome, archive user! This is an experimental FTP server. If have any
230-unusual problems, please report them via e-mail to root@metu
230-If you do have problems, please try using a dash (-) as the first character
230-of your password -- this will turn off the continuation messages that may
230-be confusing your ftp client.
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Karşıdaki makinaya bağlandık ve önümüze bir komut satırı çıktı. Bu komut satırında kullanılabilecek ftp komutlarının listesini görmek için
ftp> help
yazın. Bir komut hakkında daha ayrıntılı bilgi elde etmek için ise 'help' komutunun hemen ardından ftp komutunu getirebilirsiniz. Şimdi patika ismini bildiğimiz bir dosyayı kendi hesabımıza çekelim. Öncelikle nerede olduğumuzu görelim. Bunun için Linux komutunun benzeri olan ls veya dir komutunu kullanın.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 9
drwxrwxr-x 8 root wheel 1024 Jan 7 1980 .
drwxrwxr-x 8 root wheel 1024 Jan 7 1980 ..
drwxrwxr-x 2 root wheel 1024 Jan 7 1980 bin
drwxrwxr-x 2 root wheel 1024 Jan 7 1980 etc
drwxrwxr-x 2 root wheel 1024 Dec 3 1993 incoming
drwxrwxr-x 2 root wheel 1024 Nov 17 1993 lib
drwxrwxr-x 12 root wheel 1024 Feb 14 08:08 pub
drwxrwxr-x 3 root wheel 1024 Jan 7 1980 usr
-rw-r--r-- 1 root root 312 Aug 1 1994 welcome.msg
226 Transfer complete.
Bir ftp adresine bağlandıktan sonra genelde her adreste yeralan pub, incoming, bin gibi dizinler göreceksiniz. Bunlardan şu an için işimize yarayanı pub dizini olacaktır. Bir dizine girmek için yine bir UNIX komutu olan 'cd' ve ardından 'pub' yazın.
ftp> cd pub
Şimdi `pub' dizini altındayız. Genellikle her türlü program, uygulama yazılımı, ağ uygulamaları ve çeşitli dosyalar bu dizin altında bulunur. Burada hangi dosya ve dizinler olduğunu görelim.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 12
drwxrwxr-x 12 root wheel 1024 Feb 14 08:08 .
drwxrwxr-x 8 root wheel 1024 Jan 7 1980 ..
drwxr-xr-x 2 root root 1024 Feb 14 08:07 X
drwxr-xr-x 2 root root 1024 Feb 14 08:07 applications
drwxr-xr-x 2 root root 1024 Feb 14 08:07 development
drwxr-xr-x 2 root root 1024 Feb 14 08:08 distributions
drwxr-xr-x 2 root root 1024 Feb 14 08:07 docs
drwxr-xr-x 2 root root 1024 Feb 14 08:07 games
drwxr-xr-x 2 root root 1024 Feb 14 08:07 graphics
drwxr-xr-x 2 root root 1024 Feb 14 08:09 kernel
drwxr-xr-x 2 root root 1024 Feb 14 08:07 network
drwxr-xr-x 2 root root 1024 Feb 14 08:07 sunsite
226 Transfer complete.
ftp>
Örneğin 'kernel' dizini altında yer alan bir çekirdek dosyasını kendi makinemize alalım.
ftp> cd kernel
250 CWD command successful.
Dosyaların transferi için iki farklı transfer türü mevcuttur.
1) ASCII
2) binary
Ftp protokolünde, dosyaların bir makineden diğerine taşınması esnasında dosyanın çalıştırılabilir (arşivler, sıkıştırılmış dosyalar ve diğerleri) veya metin dosyası olması hayati önem taşır. İnternet üzerinde, zamandan tasarruf amacıyla tüm dosyalar ASCII formatta taşınırlar. Çalıştırılabilir dosyalar 8 bitlik karakterlerden oluştuğu için bunları indirebilmek için taşıma işleminin 8 bit halinde yapılması gerekir.
Mevcut transfer türünün hangisi olduğunu görmek için type komutu kullanılır.
ftp> type
using binary mode to transfer files.
ftp> ascii
200 Type set to A
Uzaktaki sunucudan bir dosyanın bilgisayarınıza bağlantını almak için get komutu kullanılır tersine kopyasını koymak için ise put komutu kullanılır. Çok sayıda dosya kopyalanması durumunda
myget veya mget* (tüm dosyalar)
myput veya mput*
bağlantısının kesilmesi ve yeniden bağlanılması durumunda
reget komutu kullanılır.
Dosya silinmesi için delete, eğer çok sayıda ise mdelete komutu kullanılır. macdef komutu ile ftp için bir makro tanımlayabiliriz.
ftp> macdef kopya
Bu komuttan sonra aşağıdaki gibi macro komutlarını satır satır girerek nihayet makroyu boş bir satırla sona erdiririz.
cd..
ls -l
<enter>
Komut satırından normal bir komut yerine bir makroyu çalıştırmak istediğimizde başına $ sembolü koyarız. Örneğin yukarıdaki kopya makrosunu çalıştırmak için
ftp> $kopya
şeklinde makro adını gireriz.
Dosyayı indirmeden önce, kontrol edilmesi gereken bir şeyde dosyanın indirileceği yerel dizinini belirtmektir. Burada linux-1.3.56.tar.gz programını 'kernel' dizininin altına çekelim. Bunun için lcd komutunu kullanalım.
ftp> lcd /root/kernel
Local directory now /root/kernel
Artık istediğimiz dosyayı indirebiliriz. Dosyaları almak için get komutu kullanılır.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 5838
drwxr-xr-x 2 root root 1024 Feb 14 08:09 .
drwxrwxr-x 12 root wheel 1024 Feb 14 08:08 ..
-rw-r--r-- 1 root root 5951488 Feb 14 08:10 linux-1.3.56.tar.gz
226 Transfer complete.
ftp> get linux-1.3.56.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-1.3.56.tar.gz (5951488 bytes).
226 Transfer complete.
5951488 bytes received in 26 secs (2.2e+02 Kbytes/sec)
26 saniye içinde yaklaşık 6 MB büyüklüğündeki dosyayı çektik. Sizin İnternet'e bağlantı hızınıza bağlı olarak dosyayı yerel diske yazma süresinde değişiklikler olabilir. Yukarıdaki işlemleri istediğiniz kadar tekrar edip gereken dosyaları çektikten sonra ftp'den çıkmak için
ftp> quit
221 Goodbye.
komutunu kullanın. Sunucu makinayla bağlantınız kesilecek ve kabuk komut satırına geri döneceksiniz.
Birden fazla dosya çekmek veya göndermek için, komutların başına ‘m’ getirilir. Örneğin :
ftp> mget ker*
komutu, ‘ker’ ile başlayan tüm dosyaları çekmek için kullanılır.