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.