Mengotomatiskan unggah dan unduh SFTP dengan WinSCP

Gambar WinSCP.

Tanggal publikasi:

Diperbarui:


Artikel teknis > Mengotomatiskan unggah dan unduh SFTP dengan WinSCP

Konteks 2026 dan penggunaan yang aman

Kesimpulan: Gunakan WinSCP.com bersama berkas skrip untuk mengotomatiskan transfer SFTP. Pin fingerprint kunci host SSH, jangan menyimpan rahasia dalam source atau argumen proses, aktifkan logging, dan gagalkan job jika WinSCP mengembalikan exit code bukan nol.

Yang akan Anda pelajari

  • Cara menyusun operasi open, get, dan put dalam workflow batch.
  • Alasan verifikasi kunci host mencegah job tanpa pengawasan mempercayai server yang salah.
  • Cara membuat transfer dapat diulang melalui log, path eksplisit, dan penanganan error.

Untuk siapa ini: Administrator Windows yang mengotomatiskan transfer berkas ke endpoint SFTP yang telah dikenal.

Konteks 2026: Skrip lama di bawah memuat contoh kredensial plaintext dan menerima host secara interaktif. Perlakukan hanya sebagai bahan pembelajaran; jangan gunakan rahasia contoh atau melewati verifikasi kunci host. Utamakan autentikasi kunci SSH atau secret store yang disetujui, lalu uji juga perilaku saat terjadi kegagalan.

Catatan keamanan: Contoh perintah dan konfigurasi dalam artikel asli belum dijalankan ulang dalam lingkungan produksi saat ini. Verifikasi versi yang didukung, cadangan, kendali akses, dan langkah rollback dalam lingkungan tes yang terpisah sebelum menerapkannya.

Sumber resmi utama

Ikhtisar

WinSCP menyediakan antarmuka command-line melalui 'WinSCP.com', selain aplikasi GUI 'WinSCP.exe'. Dengan menjalankan WinSCP.com dari Command Prompt dan memberikan berkas skrip, proses unduh serta unggah dapat diotomatisasi. Pada instalasi standar, executable tersebut berada di folder "C:\Program Files (x86)\WinSCP".

Daftar isi

  1. Apa itu command-line WinSCP?
  2. Alat unduh otomatis
  3. Alat unggah otomatis
  4. Perintah tambahan
  5. Ringkasan

1. Apa itu command-line WinSCP?

Command-line WinSCP memungkinkan operasi yang biasa dilakukan melalui GUI dijalankan dari skrip. Antarmuka ini cocok untuk job terjadwal dan workflow batch yang tidak memerlukan interaksi pengguna.

1-1. Operasi yang didukung

WinSCP dapat mengunduh dan mengunggah berkas, membuat direktori, serta menjalankan perintah shell pada server yang mendukungnya.

Perintah yang sering dipakai antara lain:

open: membuka koneksi.

get: mengunduh berkas.

put: mengunggah berkas.

exit: mengakhiri sesi command-line.

1-2. Batasan dan pemrosesan lanjutan

Transfer dasar mudah diotomatisasi, tetapi kondisi yang lebih rumit memerlukan logika tambahan. Contohnya adalah memilih berkas berdasarkan tanggal pembaruan tertentu.

Untuk kasus seperti itu, gunakan kemampuan filtering WinSCP bila tersedia atau jalankan perintah yang sesuai melalui 'call'. Pastikan input tervalidasi agar nilai yang tidak tepercaya tidak menjadi bagian dari shell command.

2. Alat unduh otomatis

Contoh pertama membuat skrip yang mengunduh log dari server Linux secara otomatis.

2-1. Membuat skrip

Contoh memakai kondisi berikut.

Windows 10 digunakan sebagai lingkungan eksekusi.

Server sumber menjalankan Linux.

Alamat IP contoh adalah 192.168.50.10.

Pertama, buat file bat sebagai titik awal untuk aktivasi.

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% 

Semua baris selain baris terakhir merupakan perintah batch Windows. Penjelasannya sebagai berikut.

@setlocal enabledelayedexpansion

Baris ini mengaktifkan delayed environment variable expansion agar nilai variabel di dalam block dapat dievaluasi pada saat eksekusi.

@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%

Rangkaian perintah ini membentuk nama direktori yyyymmddhhmmss dari waktu saat ini dan menyimpannya dalam variabel FOLDER.

@mkdir %FOLDER%

Perintah ini membuat direktori yyyymmddhhmmss di lokasi batch dijalankan.

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

Baris terakhir menjalankan WinSCP.com, membaca perintah dari "ftp.txt" di direktori yang sama, dan meneruskan path direktori yang baru dibuat sebagai parameter.

Selanjutnya, definisikan operasi WinSCP di dalam "ftp.txt".

ftp.txt


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

Setiap bagian skrip bekerja sebagai berikut.

option batch on

Mode batch mencegah prompt interaktif menghentikan job. Perhatikan perilaku default untuk konfirmasi dan overwrite, lalu sesuaikan opsi dengan kebutuhan. Contoh membuat direktori baru untuk setiap eksekusi sehingga nama berkas hasil unduhan tidak bertabrakan.

option transfer binary

Opsi ini mentransfer data dalam mode binary.

open test:testpassword@192.168.50.10

Format contoh menyertakan username, password, dan alamat IP untuk membuka koneksi. Jangan menyimpan kredensial produksi dalam plaintext seperti ini.

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

Perintah tersebut menyimpan '/var/log/httpd/access_log' ke direktori yyyymmddhhmmss. '%1%' menerima argumen yang diteruskan oleh file_get.bat.

Wildcard juga dapat digunakan. Misalnya, "/var/log/httpd/*" memilih seluruh berkas pada direktori tersebut.

close
exit

close menutup koneksi dan exit mengakhiri WinSCP.

Skrip unduh kini selesai.

2-2. Persiapan eksekusi

Verifikasi fingerprint kunci host sebelum menjalankan job tanpa pengawasan.

Pada koneksi pertama, WinSCP meminta konfirmasi terhadap kunci host server dan dapat menyimpan keputusan tersebut di Windows Registry. Jangan menerima prompt hanya karena alamat server terlihat benar; bandingkan fingerprint dengan nilai yang diperoleh melalui jalur tepercaya. Contoh lama berikut memperlihatkan alur interaktifnya, tetapi otomasi modern sebaiknya menetapkan fingerprint secara eksplisit pada session URL.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Anda diminta untuk memberikan respons, masukkan 'y'.
close
exit
exit

Ganti nilai contoh 'test:testpassword@192.168.50.10' dengan konfigurasi koneksi uji yang aman. Jangan memasukkan kredensial produksi langsung ke command history.

Setelah fingerprint diverifikasi dan konfigurasi koneksi siap, lanjutkan ke pengujian skrip.

2-3. Menjalankan skrip

Jalankan 'file_get.bat' dari lingkungan uji.

Transfer berhasil jika direktori yyyymmddhhmmss dibuat dan berkas log tersimpan di dalamnya. Periksa juga exit code dan log WinSCP; keberadaan direktori saja belum menjamin semua berkas berhasil ditransfer.

3. Alat unggah otomatis

Contoh berikut mengunggah berkas ke server Linux. Struktur dasarnya sama dengan skrip unduh.

3-1. Membuat skrip

Contoh memakai kondisi berikut.

Windows 10 digunakan sebagai lingkungan eksekusi.

Server tujuan menjalankan Linux.

Alamat IP contoh adalah 192.168.50.10.

Pertama, buat file bat sebagai titik awal untuk aktivasi.

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 memilih berkas dalam direktori 'put_files' yang berada di sebelah file batch, lalu meneruskan '/tmp/' sebagai direktori tujuan. Operasi unggah sebenarnya didefinisikan dalam "put_ftp.txt".

put_ftp.txt


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

Perintah "put %1%\ %2%" mengunggah berkas dari path sumber ke direktori tujuan yang diteruskan sebagai argumen.

3-2. Persiapan eksekusi

Verifikasi fingerprint kunci host sebelum eksekusi. Jika host yang sama sudah diverifikasi untuk skrip unduh, konfirmasi interaktif biasanya tidak muncul lagi, tetapi nilai fingerprint tetap harus dikelola dengan sengaja.

Jalankan perintah berikut pada prompt perintah.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Anda diminta untuk memberikan respons, masukkan 'y'.
close
exit
exit

Ganti nilai contoh dengan konfigurasi uji yang aman dan hindari kredensial plaintext dalam source maupun command history.

Setelah konfigurasi koneksi siap, uji skrip unggah.

3-3. Menjalankan skrip

Jalankan 'file_put.bat' dari lingkungan uji.

Pastikan berkas dalam 'put_files' terkirim ke '/tmp/', lalu periksa exit code, log, ownership, dan permission pada server tujuan.

4. Perintah tambahan

Selain transfer dasar, otomasi sering memerlukan autentikasi kunci atau pemanggilan shell command.

4-1. Autentikasi kunci

Contoh sebelumnya memakai autentikasi password seperti berikut.

open test:testpassword@192.168.50.10

Untuk autentikasi kunci, gunakan bentuk berikut.

open test@192.168.50.10 -privatekey=id_rsa.ppk

'-privatekey=id_rsa.ppk' menunjuk ke private key. Path relatif dicari dari working directory proses; gunakan path absolut jika lokasi eksekusi dapat berubah. Lindungi private key dengan permission yang tepat dan jangan menyimpannya bersama source yang dapat diakses umum.

4-2. Menjalankan shell command

Perintah 'call' menjalankan shell command pada server melalui sesi WinSCP.

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

'call sh /tmp/test.sh' menjalankan test.sh. Argumen dapat ditambahkan, misalnya "call sh /tmp/test.sh param1". Jangan menyusun command dari input yang tidak tepercaya.

5. Ringkasan

WinSCP.com dapat mengubah transfer berulang di GUI menjadi job batch yang dapat direproduksi. Untuk penggunaan nyata, tambahkan verifikasi fingerprint kunci host, pengelolaan rahasia, logging, pemeriksaan exit code, dan pengujian kegagalan; contoh kredensial plaintext dalam artikel lama tidak boleh dipakai di produksi.