İhtiyaç gayet açık: uzak bir FTP sunucusunda yeni dosyalar göründüğünde bunu öğrenmek ve bu dosyalarla bir şeyler yapmak istiyorsunuz - indirmek, işlemek, başka bir iş akışı tetiklemek. Zorluk şu: FTP sunucuları bildirim göndermez. Sadece orada dururlar. Siz onlara sormanız gerekir.

Bunu çözmenin iki yolu var. Birincisi Terminal, kabuk scripting bilgisi ve sessiz hataları kabullenmek gerektirir. İkincisi bunların hiçbirini gerektirmez.

Zor yol: shell scriptleri ve cron

Bir sistem yöneticisine FTP klasörünü nasıl izleyeceğinizi sorarsanız, ilk yanıt genellikle lftp'nin - bir komut satırı FTP istemcisinin - belirli aralıklarla çalıştıran bir cron job veya launchd agent ile birleştirilmesinin çeşitli biçimlerinden biri olur.

Tipik kurulum şöyle görünür. Önce uzak klasörü yerel bir klasöre yansıtmak (mirror) için lftp kullanan bir shell scripti yazarsınız:

#!/bin/bash
# ftp-indir.sh
lftp -u kullanici,sifre ftp.example.com << EOF
mirror --only-newer --no-recursion /uzak/klasor /Users/sen/Downloads/ftp-izle/
quit
EOF

Ardından her beş dakikada bir çalışması için cron girdisiyle (crontab -e) zamanlayın:

# FTP senkronizasyonunu her 5 dakikada bir çalıştır
*/5 * * * * /Users/sen/scriptler/ftp-indir.sh >> /tmp/ftp-sync.log 2>&1

Bu çalışır. Her şey doğru kurulmuş ve doğru kalmaya devam ederse sunucuyu her beş dakikada bir kontrol eder ve yeni olanları indirir.

Ancak bu yaklaşımın gerçek sorunları var:

Terminalde rahat olan ve GUI araçlara kıyasla kodu tercih eden bir geliştirici için bu kabul edilebilir olabilir. Başka herkes için - ve güvenilirliğin ve geri bildirimin önemli olduğu iş akışlarında - bu yanlış araçtır.

Kolay yol: FTPull

FTPull, uzak FTP klasörlerini izleyen ve yeni dosyaları otomatik olarak indiren bir macOS uygulamasıdır. Temelde aynı kavramın - sunucunun periyodik yoklanması - bir GUI sarmalayıcısıdır; ancak shell script yaklaşımının tüm sorunları çözülmüş haldedir.

Bir FTP klasörünü izlemeye başlamak için:

  1. FTPull'u yükleyin ve Uygulamalar klasöründen açın. Menü çubuğuna bir simge ekler.
  2. Ayarları açın ve yeni bir bağlantı ekleyin: ana bilgisayar adı, port, kullanıcı adı, şifre, protokol (FTP/SFTP/FTPS).
  3. Uzak klasör yolunu belirleyin - sunucuda izlemek istediğiniz dizin.
  4. Yerel bir klasör seçin - indirilen dosyaların Mac'inizde gideceği yer.
  5. Yoklama aralığını ayarlayın - FTPull'un sunucuyu ne sıklıkta kontrol edeceği. Duyarlı izleme için her 1 dakika; daha hafif ağ kullanımı istiyorsanız her 5 dakika.
  6. Bağlantıyı etkinleştirin. FTPull hemen yoklamaya başlar.

Kurulum bu kadar. Artık FTPull her şeyi otomatik olarak yönetir. Sunucuda yeni bir dosya göründüğünde FTPull bunu bir sonraki yoklamada tespit eder, indirir ve bir macOS bildirimi gönderir.

FTPull neyi izler?

FTPull, uzak klasörün durumunu mevcut dosya listesini önceki yoklamada gördükleriyle karşılaştırarak takip eder. Yeni olan her şey indirilir. Daha ayrıntılı olarak:

Uzantı filtreleri

Yalnızca belirli dosya türleriyle ilgileniyorsanız - örneğin bir veri akışından .csv dosyaları veya işlem sisteminden .pdf dosyaları - bir uzantı filtresi ayarlayın. FTPull diğer her şeyi sessizce atlar. Bu, uzak klasörün üzerinde işlem yapmanız gerekmeyen dosya türleri de aldığı durumlarda kullanışlıdır.

Birden fazla klasör, birden fazla sunucu

Shell scriptlerine kıyasla pratik avantajlardan biri çoklu bağlantı yönetimidir. Beş farklı FTP sunucusunu - bir müşteri sunucusu, dahili bir sunucu, bir tedarikçi akışı ve iki bölgesel varyant - izlemeniz mi gerekiyor? FTPull'a beş bağlantı ekleyin. Hepsi tek bir menü çubuğu simgesinden bağımsız olarak çalışır; her birinin kendi yoklama aralığı ve ayarları vardır.

Cron ile bunların her biri ayrı bir script, ayrı bir cron girdisi ve okumadığınız ayrı bir log dosyası olurdu.

Zamanlama

FTPull, izlemeyi belirli saatler ve günlerle kısıtlayan bir zamanlama özelliği içerir. Dosyalar yalnızca mesai saatlerinde geliyorsa - sabah 9'dan akşam 5'e kadar çalışan bir sistemden - Cumartesi sabahı 3'te yoklama yapmanın bir anlamı yok. Zamanlamayı ayarlayın (örneğin sabah 8'den akşam 8'e, Pazartesi-Cuma) ve FTPull bu saatlerin dışında otomatik olarak duraklar.

Bu aynı zamanda gereksiz ağ trafiğini ve sunucu yükünü azaltır - özellikle katı hız sınırları veya bağlantı kotaları olan bir sunucuyu izliyorsanız bu önemlidir.

Bir şeyler ters gittiğinde

FTPull'un script yaklaşımından en belirgin biçimde ayrıştığı yer burasıdır. Bir indirme başarısız olduğunda:

Bunu bir cron scriptiyle karşılaştırın: hata muhtemelen okumadığınız bir log dosyasına eklenir, başka bir şey olmaz, birisi dosyaların neden gelmediğini fark edene kadar dosya indirilmez.

Scriptler sürekli bakım gerektirir

Shell scriptleri ve cron job'larının arayüzü, bildirimi ve hata kurtarması yoktur. Bir kimlik bilgisi değişikliği, sunucu taşınması veya ağ sorunu bunların sessizce başarısız olmasına neden olur - ve birisi dosyaların neden gelmediğini sorduğunda öğrenirsiniz.

FTPull bunların tümünü sizin yerinize yönetir. Bir kez yapılandırın ve süresiz olarak arka planda sessizce çalışsın - dikkatinizi gerektiren bir şey olduğunda tam geri bildirimle.