Ç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..
- SSH ile bağlanalım. root olarak girelim ya da girdikten sonra su ile root olalım.
- 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) vecp /usr/sbin/proftpd /usr/sbin/proftpd.old && cp /etc/proftpd.conf /etc/proftpd.conf.old
diyerek yedekleri yaratın. Komutları sırasıyla gidin. -
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
- 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
gibi.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
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.