İ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:
- Bildirim yok. Dosyalar klasöre gelir - siz elle kontrol edene kadar haberdar olmazsınız.
- Sessizce bozulur. Şifre değişirse, sunucu taşınırsa veya ağda bir aksaklık olursa script sessizce başarısız olur. Birisi dosyaların neden gelmediğini sorduğunda öğrenirsiniz.
- Arayüz yok. Hata ayıklama log dosyalarını okumayı gerektirir. Durumu kontrol etmek komut çalıştırmayı gerektirir.
- Bakım gerektirir. macOS güncellemeleri zaman zaman cron veya launchd yapılandırmalarını bozar. Kimlik bilgileri düz metin shell scriptleri veya kimlik bilgisi dosyalarında güncellenmelidir.
- Hata yönetimi yok. Eksik bir indirme veya sunucu zaman aşımı yalnızca log'a hata satırı ekler - eğer okuyorsanız.
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:
- FTPull'u yükleyin ve Uygulamalar klasöründen açın. Menü çubuğuna bir simge ekler.
- Ayarları açın ve yeni bir bağlantı ekleyin: ana bilgisayar adı, port, kullanıcı adı, şifre, protokol (FTP/SFTP/FTPS).
- Uzak klasör yolunu belirleyin - sunucuda izlemek istediğiniz dizin.
- Yerel bir klasör seçin - indirilen dosyaların Mac'inizde gideceği yer.
- 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.
- 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:
- Yeni dosyalar - önceki listede yer almayan dosyalar
- Değiştirilmiş dosyalar (isteğe bağlı) - boyutu veya değiştirilme zaman damgası değişen dosyalar
- Alt klasörler - FTPull alt klasörleri özyinelemeli olarak izleyebilir; her alt klasör için ayrı bir bağlantıya gerek kalmaz
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:
- Dosya kırmızı Finder etiketiyle işaretlenir - uygulamayı açmadan indirme klasöründe hemen görünür
- macOS Bildirim Merkezi üzerinden hata bildirimi gönderilir
- Hata, FTPull'un log görünümünde belirli hata nedeniyle birlikte kaydedilir
- Dosya bir sonraki yoklama döngüsünde yeniden denenir
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.
