Çok fazla ve büyük dosyalı web sitelerini yönetiyor ve bir CVS sistemi kullanmıyorsanız lokal kopyalarınız ile uzak dosyaları karşılaştırma ihtiyacını sık yaşarsınız.

Beyond Compare isimli program bu işte süper olsa da, FTP üzerinden dosya karşılaştırma işlemi uzun sürebiliyor; çünkü uzaktaki dosyayı önce indirip sonra lokal kopyayla karşılaştırmak zorunda. Bahsi geçen dosyalar yüzlerce MB boyutunda olunca bu bahsettiğimiz işlem pek hoş bir işlem olmuyor.

Buna bir çözüm olarak ne mutlu ki ProFTPd ile çalışacak bir modül yazılmış, Mathias Berchtold tarafından. FTP komutlarına bazı eklentiler yaparak dosyaların CRC32 (XCRC), MD5 (XMD5), SHA1 (XSHA1) ve SHA256 (XSHA256) hash / digest’larını karşı tarafa iletebilmeyi sağlıyor.

Hö? diyenleriniz için; yüzlerce MB’lik dosyanın karşılaştırma süresi dakikalar değil saniyeler alıyor; zira sadece dosyanın “imzası” karşılaştırılıyor.

Gelelim nasıl kuruyoruz, nasıl ediyoruz kısmına. Bu örnek CentOS kurulu VPS’te denendi, çalıştırıldı.

Adım adım gidersek..

  1. SSH ile bağlanalım. root olarak girelim ya da girdikten sonra su ile root olalım.
  2. Varolan proftpd binary’imizin ve konfigürasyon dosyasının yedeğini alalım, which proftpd ile proftpd’nin olduğu yeri bulun (/usr/sbin/proftpd olacaktır) ve cp /usr/sbin/proftpd /usr/sbin/proftpd.old && cp /etc/proftpd.conf /etc/proftpd.conf.old diyerek yedekleri yaratın. Komutları sırasıyla gidin.
  3. yum -y install pam-devel
    wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3f.tar.gz
    tar xfz proftpd-1.3.3f.tar.gz
    cd proftpd-1.3.3f/modules
    wget --no-check-certificate https://www.smartftp.com/static/oss/proftpd/mod_digest.c
    cd ..
    ./configure --prefix=/usr --sysconfdir=/etc --with-modules=mod_auth_pam:mod_digest
    make
    make install
    
  4. Başarıyla derlediyseniz ve yüklediyseniz /usr/sbin/proftpd yazarak fatal: Socket operation on non-socket hatası alın (iyidir), sonrasında FTP clientınızla bağlanmayı deneyin. Sorunsuzca bağlanmalı ve FEAT komutunuza yeni eklenen X’li komutları görmelisiniz. Örneğin
    Command:    FEAT
    Response:   211-Features:
    Response:    XSHA256
    Response:    MDTM
    Response:    MFMT
    Response:    TVFS
    Response:    MFF modify;UNIX.group;UNIX.mode;
    Response:    MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
    Response:    XSHA1
    Response:    REST STREAM
    Response:    XCRC
    Response:    XMD5
    Response:    SIZE
    
    gibi.

Böylelikle hash/digest bazlı karşılaştırma destekleyen programlarda on kaplan gücünde oldunuz. Kolay gelsin.

Güncelleme (04.05.12):
SmartFTP OSS library linki değişmiş, GitHub’dan da ulaşılabilir artık.