
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
Contents
- 1 Format Umum Perintah SCP
- 2 Contoh Penggunaan SCP
- 3 Opsi-Opsi Penting SCP
- 4 Tips Tambahan
- 5 Script untuk backup data
- 6 1. Contoh Skrip backup.sh (otomatis upload dengan SCP)
- 7 2. Tambahan di train.py (memanggil scp dari Python)
- 8 3. Menggunakan SSH Key agar Tidak Perlu Password
- 9 Hasilnya
- 10 Alternatif Menggunakan rsync
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 serverremote_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.
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
- Buat SSH key (kalau belum):
ssh-keygen -t rsa -b 4096
- Salin key ke server:
ssh-copy-id -p 22 username@192.168.1.10
Setelah itu, SCP bisa jalan otomatis tanpa input password.
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