WinSCP ile SFTP yükleme ve indirmelerini otomatikleştirme

WinSCP görüntüleri.

Yayın tarihi:

Güncelleme:


Teknik makaleler > WinSCP ile SFTP yükleme ve indirmelerini otomatikleştirme

2026 bağlamı ve güvenli kullanım

Sonuç: WinSCP.com ile bir script dosyası kullanın, sunucunun SSH host key fingerprint'ini sabitleyin, sırları kaynak koddan ve işlem argümanlarından uzak tutun, loglamayı etkinleştirin ve WinSCP sıfırdan farklı bir exit code döndürdüğünde işi başarısız sayın.

Ne öğreneceksiniz

  • Komut dosyasıyla yazılmış open, get ve put işlemlerinin toplu iş akışına nasıl uyum sağladığı.
  • Host key doğrulamasının gözetimsiz bir işin yanlış sunucuya güvenmesini nasıl önlediği.
  • Loglar, açık dosya yolları ve hata yönetimiyle aktarımları tekrarlanabilir hâle getirme.

Kimler için: Bilinen bir SFTP endpoint'ine dosya aktarımını otomatikleştiren Windows yöneticileri.

2026 bağlamı: Aşağıdaki eski script, örnek amaçlı düz metin kimlik bilgileri içerir ve host key'i etkileşimli olarak kabul eder. Bu bilgileri üretimde kullanmayın ve host key doğrulamasını atlamayın. SSH anahtarı veya onaylı bir secret store tercih edin; hata ve kurtarma davranışını test edin.

Güvenlik notu: Orijinal makaledeki komutlar ve yapılandırma örnekleri mevcut üretim ortamında yeniden çalıştırılmamıştır. Desteklenen sürümleri, yedeklemeleri, erişim kontrollerini ve geri alma adımlarını uygulamadan önce ayrı bir test ortamında doğrulayın.

Başlıca resmî kaynaklar

Genel bakış

WinSCP'nin scripting arayüzüyle tekrarlanabilir dosya indirme ve yükleme işleri oluşturabilirsiniz. GUI için WinSCP.exe kullanılırken otomasyon örnekleri aynı kurulum dizinindeki WinSCP.com üzerinden çalıştırılır. Bu makale, Windows batch dosyası ile WinSCP script dosyasının nasıl birlikte kullanıldığını gösterir.

İçindekiler

  1. WinSCP komutu nedir?
  2. Otomatik indirme aracı
  3. Otomatik yükleme aracı
  4. Sık kullanılabilecek diğer komutlar
  5. Özet

1. WinSCP komutu nedir?

WinSCP scripting, GUI'de elle yapılan aktarım işlemlerini komutlarla tekrarlanabilir hâle getirir.

1-1. Desteklenen otomasyon işlemleri

WinSCP script'leri dosya indirebilir ve yükleyebilir, klasör oluşturabilir, içerik senkronize edebilir ve desteklenen uzak komutları çağırabilir.

Bu örnekte en sık kullanılan komutlar şunlardır:

open: SFTP oturumunu açar.

get: Uzak dosyayı indirir.

put: Yerel dosyayı yükler.

exit: WinSCP scripting oturumunu kapatır.

1-2. WinSCP scripting sınırları

Temel indirme, yükleme ve senkronizasyon işlemleri doğrudan desteklenir; karmaşık dosya seçme koşulları için ek mantık gerekebilir.

Örneğin dosyanın değiştirilme zamanını değerlendirip yalnızca belirli tarihteki dosyaları seçmek, yerel bir batch ya da PowerShell wrapper ile daha açık yönetilebilir.

Gerekirse call komutuyla dikkatle incelenmiş bir uzak komut çalıştırılabilir. Komut argümanlarını güvenilmeyen girdi olarak değerlendirin ve hedef shell için doğru biçimde quote edin.

2. Otomatik indirme aracı

İlk örnek, Linux sunucusundaki log dosyasını otomatik olarak indirir.

2-1. Script dosyalarını hazırlama

Tarihsel örneğin koşulları şöyledir:

• Çalıştırma ortamı Windows 10'dur.

• Kaynak sunucu Linux'tur.

• IP adresi 192.168.50.10.

Önce işi başlatan batch dosyasını oluşturun.

file_get.bat


@setlocal enabledelayedexpansion
@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%
@mkdir %FOLDER%
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER% 

Son satır WinSCP.com'u çağırır; önceki satırlar Windows batch söz dizimidir.

@setlocal enabledelayedexpansion

Bu ayar batch dosyasında gecikmeli ortam değişkeni genişletmesini etkinleştirir.

@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%

Bu satırlar geçerli zamandan yyyymmddhhmmss biçiminde bir klasör adı üretir ve tam yolu FOLDER değişkenine atar.

@mkdir %FOLDER%

Batch dosyasının bulunduğu dizinin altında zaman damgalı klasörü oluşturur.

@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER% 

WinSCP.com, batch dosyasıyla aynı dizindeki ftp.txt script'ini çalıştırır ve yeni oluşturulan klasör yolunu parametre olarak geçirir.

Ardından aktarım adımlarını ftp.txt içinde tanımlayın.

ftp.txt


option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit

Komutların işlevleri aşağıda açıklanmıştır.

option batch on

batch modu, etkileşimli soruların gözetimsiz işi durdurmasını önler. Üzerine yazma ve hata davranışını üretim gereksinimlerine göre açıkça belirleyin; bu örnekte zaman damgalı klasör dosya adı çakışmasını azaltır.

option transfer binary

Dosyaları binary aktarım modunda gönderir.

open test:testpassword@192.168.50.10

Örnek, kullanıcı adı ve parolayla 192.168.50.10 adresine bağlanır. Düz metin kimlik bilgisini üretimde kullanmayın.

get /var/log/httpd/access_log %1%\

/var/log/httpd/access_log dosyasını zaman damgalı yerel klasöre indirir. %1%, file_get.bat tarafından geçirilen hedef klasördür.

Wildcard kullanılabilir; ancak beklenmeyen büyük aktarımları önlemek için eşleşecek dosyaları önceden doğrulayın.

close
exit

Bu komutlar bağlantıyı ve WinSCP oturumunu kapatır.

2-2. Host key doğrulamasını hazırlama

İlk otomatik çalıştırmadan önce SSH host key fingerprint'ini güvenilir bir kanal üzerinden doğrulayın.

Aşağıdaki eski örnek, ilk bağlantıda anahtarı etkileşimli olarak Windows kayıt defterine kaydeder. Güncel otomasyonda beklenen fingerprint'i script veya session URL içinde açıkça sabitlemek daha güvenlidir; ekrandaki anahtarı doğrulamadan kabul etmeyin.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Bir yanıt vermeniz istenir, 'y' girin.
close
exit
exit

Örnekteki test hesabı ve parola yalnızca açıklama amaçlıdır. Gerçek kimlik bilgilerini kaynak dosyaya yazmayın.

2-3. İndirme işini çalıştırma

file_get.bat dosyasını çalıştırın. Zaman damgalı klasörün oluşturulduğunu, logun indirildiğini ve WinSCP exit code'unun başarı gösterdiğini doğrulayın.

3. Otomatik yükleme aracı

İkinci örnek yerel dosyaları Linux sunucusuna yükler. Genel yapı indirme işiyle aynıdır.

3-1. Script dosyalarını hazırlama

Tarihsel örneğin koşulları şöyledir:

• Çalıştırma ortamı Windows 10'dur.

• Hedef sunucu Linux'tur.

• IP adresi 192.168.50.10.

Önce yükleme işini başlatan batch dosyasını oluşturun.

file_put.bat


@setlocal enabledelayedexpansion
@set FOLDER_NAME="put_files\*"
@set FOLDER=%~dp0%FOLDER_NAME%
@set PUT_FOLDER="/tmp/"
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0put_ftp.txt /parameter %FOLDER% %PUT_FOLDER%

Batch dosyası, kendi dizinindeki put_files klasörünü kaynak ve uzak /tmp/ klasörünü hedef olarak geçirir. Asıl aktarım put_ftp.txt içinde tanımlanır.

put_ftp.txt


option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit

put komutu, parametrelerle geçirilen yerel kaynak dosyaları uzak hedef klasöre yükler. Kaynak wildcard'ının beklenen dosyaları eşleştirdiğini çalıştırmadan önce doğrulayın.

3-2. Host key doğrulamasını hazırlama

İndirme işinde olduğu gibi, otomasyondan önce SSH host key fingerprint'ini güvenilir bir kanaldan doğrulayın. Aynı güvenilir sunucu için doğrulanmış kayıt zaten varsa yeniden kabul gerekmez.

Aşağıdaki komutlar tarihsel etkileşimli yöntemi gösterir.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Bir yanıt vermeniz istenir, 'y' girin.
close
exit
exit

Örnek kimlik bilgilerini gerçek değerlerle değiştirirken parolayı script'e yazmayın; onaylı bir secret store veya SSH anahtarı kullanın.

3-3. Yükleme işini çalıştırma

file_put.bat dosyasını çalıştırın. put_files içindeki beklenen dosyaların uzak /tmp/ klasörüne aktarıldığını ve exit code'un başarı gösterdiğini doğrulayın.

4. Sık kullanılabilecek diğer komutlar

Temel get ve put işlemlerine ek olarak, SSH anahtarıyla kimlik doğrulama ve uzak komut çağırma kullanılabilir.

4-1. SSH anahtarıyla kimlik doğrulama

Önceki örnek parola kullandı:

open test:testpassword@192.168.50.10

SSH anahtarıyla bağlantı için private key seçeneğini belirtin:

open test@192.168.50.10 -privatekey=id_rsa.ppk

-privatekey değeri PPK dosyasının yoludur. Göreli yol kullanılırsa çalışma dizinine göre çözülür; güvenilir bir mutlak yol kullanmak zamanlanmış işlerde daha öngörülebilir olabilir. Private key dosyasına erişimi sınırlandırın.

4-2. Uzak komut çağırma

WinSCP üzerinden desteklenen bir uzak shell komutunu çağırmak için call kullanın:

option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit

Bu örnek /tmp/test.sh dosyasını çalıştırır. Argüman eklenebilir; ancak uzak komuta taşınan tüm değerleri güvenilmeyen girdi olarak ele alın ve shell injection riskine karşı doğru biçimde quote edin.

5. Özet

WinSCP.com ve script dosyaları, tekrarlanan SFTP indirme ve yükleme işlerini otomatikleştirebilir. Üretim işinde host key fingerprint doğrulaması, güvenli kimlik bilgisi yönetimi, loglama ve exit code kontrolünü zorunlu tutun; tarihsel örnekteki düz metin parolaları kullanmayın.