Upload dan download file ke server via Protokol SSH

By | April 18, 2025
435 Views

Upload dan download file ke server via Protokol SSH menggunakan SCP. SCP Secure Copy Protocol untuk upload dan download file ke server. Apa itu SCP? scp adalah singkatan dari Secure Copy Protocol, digunakan untuk menyalin file atau direktori antar komputer secara aman melalui koneksi SSH. Jadi, scp memanfaatkan enkripsi SSH untuk menjaga keamanan data selama proses transfer. Saya biasa menggunakan SCP karena lebih suka yang berbasis CLI daripada SFTP seperti filezilla. Bila menggunakan SCP bisa kita atur untuk melakukan backup data secara berkala.

Format Umum Perintah SCP

scp [opsi] sumber tujuan

Contoh paling dasar:

scp file.txt user@192.168.1.10:/home/user/

Artinya: Salin file.txt dari komputer lokal ke direktori /home/user/ di server 192.168.1.10 dengan user user.

Contoh Penggunaan SCP

1. Mengirim file ke server

scp file.txt user@remote_host:/remote/path/

  • Mengirim file file.txt dari lokal ke server remote_host di path /remote/path/.

2. Mengambil file dari server

scp user@remote_host:/remote/path/file.txt ./local_folder/

  • Menyalin file dari server ke komputer lokal.

3. Menyalin direktori (pakai -r)

scp -r folder/ user@remote_host:/remote/path/

  • Menyalin folder dan isinya ke server (recursive copy).

4. Menggunakan port selain default (22)

scp -P 2222 file.txt user@remote_host:/remote/path/

  • Menyalin file ke server melalui port 2222.
See also  jupyterlab bisa dibobol menggunakan teknik bruteforce?

5. Menyalin antar dua remote host

scp user1@host1:/path/file.txt user2@host2:/path/

  • Menyalin file langsung dari satu server ke server lain (dari host1 ke host2).

Opsi-Opsi Penting SCP

Opsi Keterangan
-r Menyalin direktori secara rekursif
-P Menentukan port SSH yang digunakan
-v Verbose mode – menampilkan log transfer
-C Mengaktifkan kompresi selama transfer
-i Menentukan file private key (jika pakai key-based SSH)

Contoh:

scp -i ~/.ssh/id_rsa file.txt user@remote:/path/

Tips Tambahan

  • SCP sangat cepat untuk tugas sederhana, tapi untuk transfer file besar atau banyak, bisa pertimbangkan rsync yang lebih efisien.
  • Gunakan -C untuk kompresi saat transfer file besar:

scp -C largefile.zip user@remote:/target/path/

Script untuk backup data

ontoh penggunaan SCP dalam otomatisasi backup hasil training ke server—lengkap dengan penjelasan. Anggap kamu punya file model hasil training (model.pth) di lokal, dan ingin upload ke server setiap kali selesai training

project/
│
├── train.py           # Skrip training
├── model.pth          # Output model setelah training
└── backup.sh          # Skrip upload hasil training ke server (pakai SCP)

1. Contoh Skrip backup.sh (otomatis upload dengan SCP)

#!/bin/bash

# Konfigurasi
FILE_TO_UPLOAD="model.pth"
REMOTE_USER="username"
REMOTE_HOST="192.168.1.10"
REMOTE_PATH="/home/username/models/"
SSH_PORT=22

# Upload file ke server
echo "Uploading $FILE_TO_UPLOAD to $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"
scp -P $SSH_PORT $FILE_TO_UPLOAD ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}

# Cek hasil
if [ $? -eq 0 ]; then
    echo "Upload berhasil!"
else
    echo "Upload gagal!"
fi

Cara pakai:

bash backup.sh

Kalau ingin langsung dipanggil dari train.py setelah training, bisa tambahkan di akhir Python script seperti ini:

2. Tambahan di train.py (memanggil scp dari Python)

import os

# Training selesai...
torch.save(model.state_dict(), 'model.pth')

# Panggil SCP via shell script
os.system('bash backup.sh')

3. Menggunakan SSH Key agar Tidak Perlu Password

Agar tidak diminta password setiap kali upload: lebih lanjut Cara Setting Login SSH Tanpa Password

  1. Buat SSH key (kalau belum):ssh-keygen -t rsa -b 4096
  2. Salin key ke server:ssh-copy-id -p 22 username@192.168.1.10

Setelah itu, SCP bisa jalan otomatis tanpa input password.

See also  Install Metasploit di Ubuntu dan Modul Brute Force

Hasilnya

Setiap selesai training:

  • model.pth otomatis di-upload ke server tujuan.
  • Tidak perlu upload manual.
  • Bisa diintegrasikan ke pipeline otomatis.

Alternatif Menggunakan rsync

Selain menggunakan scp, kita bisa menggunakan rsync yang lebih canggih fiturnya seperti layaknya fitur backup yang bisa resume download/upload file berdasarkan pengaturan tertentu. Kalian bisa membaca Rsync Untuk Sinkronisasi berbasis CLI

  • perintah upload:

rsync -avzr --partial --progress '/home/bebek/projects/desain rumah idaman' ayam@187.109.167.130:'/home/ayam/nitip'

artinya adalah

  • -a, –archive: Parameter ini akan menyalin file secara rekursif dengan tetap menjaga atribut pada file seperti permission. opsi ini merupakan opsi yang sering digunakan, dan umumnya akan dikombinasikan dengan parameter yang lain.
    • Mengaktifkan mode “arsip”:

      • Rekursif (mencakup sub‑direktori)

      • Menjaga permission, timestamp, owner, group, symbolic link, dll.
        (Sebenarnya sudah termasuk -r, -l, -p, -t, -g, -o, -D)

  • -v, –verbose: Parameter ini berfungsi untuk menampilkan output detail saat proses rsync dilakukan. Hal ini akan membuat Anda dapat melihat proses apa yang sedang dilakukan oleh proses rsync.
  • -z, –compress: Parameter ini akan mengaktifkan compress file selama proses transfer. Dengan parameter ini tentunya juga dapat menghemat bandwidth saat proses rsync dijalankan.
  • -r, –recursive: Parameter ini akan menyalin direktori secara rekursif. Dengan parameter ini proses rsync tidak hanya dilakukan untuk file di folder utama saja namun juga akan dilakukan untuk semua subfolder dan file-file yang ada di dalamnya. Mencopy direktori secara rekursif—karena -a sudah mencakup ini, flag -r sebenarnya tidak wajib, tapi sering ditulis eksplisit.
  • –partial: Menyimpan file yang ter‑transfer sebagian jika proses terputus, sehingga saat kamu menjalankan lagi rsync bisa melanjutkan dari posisi terakhir (resume) alih‑alih mengulang dari awal.
  • –progress: memperlihatkan progress upload
See also  Membuat Koneksi Secara Persisten dengan Autossh