Perintah scp: Cara Pakai dan Opsi, Menyalin Folder, dan Menentukan Port

Lingkungan ujiKeluarga RHELAlmaLinux 9.8OpenSSH 9.9p1Sisi penerima Debian 12 · OpenSSH 9.2p1akun rootDiperiksa 2026-10-28

scp adalah alat salin yang digunakan untuk bertukar file dengan server yang Anda akses melalui SSH. Saat mengirim file dengan perintah scp, Anda menulis sumber lebih dulu lalu tujuan di belakangnya, seperti pada cp. Setelah kami mengirim file dan folder dari server AlmaLinux 9 ke server Debian 12 lalu mengambilnya kembali, transfer berlangsung melalui protokol SFTP dan satu file 20MB tiba dalam waktu kurang dari 1 detik.

Semua output di bawah adalah hasil apa adanya dari scp OpenSSH 9.9 yang dijalankan dengan akun root di sisi pengirim. Hanya alamat server dan nama akun yang diganti dengan nilai contoh.

1️⃣ Cara pakai scp dan path jarak jauh

Di depan path server jarak jauh, tambahkan [akun@alamat server:]. Path tanpa titik dua dikenali sebagai path di server tempat perintah dijalankan, sehingga sisi yang memakai titik dua menentukan apakah Anda mengirim atau menerima.

🧭 Arah salin scp dan path jarak jauh
Diagram penjelasan
↔️ Arah salin
$ scp report.txt user@203.0.113.10:~/scp-test/user@203.0.113.10:~/scp-test/report.txt ./downloads/-3 user@203.0.113.10:~/scp-test/report.txt user@198.51.100.20:~/scp-test/
sumber💻 Server yang menjalankan perintahreport.txt
➜
tujuan🖥️ Server jarak jauh203.0.113.10:~/scp-test/
sumber🖥️ Server jarak jauh203.0.113.10:~/scp-test/report.txt
➜
tujuan💻 Server yang menjalankan perintah./downloads/
sumber🖥️ Server jarak jauh A203.0.113.10:~/scp-test/report.txt
➜
Perantara💻 Server yang menjalankan perintah-3
➜
tujuan🖥️ Server jarak jauh B198.51.100.20:~/scp-test/
🧩 Bentuk path jarak jauh
user akun yang dipakai untuk terhubung, 203.0.113.10 alamat server atau domain, :~/scp-test/ dan setelah titik dua, path di server itu (tilde berarti folder home)
Jika file lokal ditulis di depan dan path jarak jauh di belakang, itu berarti mengirim. Jika path setelah titik dua berakhir dengan garis miring, file disimpan di dalam folder itu dengan nama yang sama.
Jika path jarak jauh ditulis di depan, itu berarti menerima. File yang diterima berada di path lokal yang ditulis di belakangnya.
Jika sumber dan tujuan sama-sama server jarak jauh, mulai OpenSSH 8.7 data melewati server yang menjalankan perintah. Ini sama dengan cara saat menambahkan -3.

Mengirim report.txt dari folder saat ini ke folder scp-test di bawah home server jarak jauh.

scp report.txt user@203.0.113.10:~/scp-test/
report.txt                                    100%   14     5.1KB/s   00:00

Setelah transfer selesai, nama file, progres, ukuran, kecepatan, dan waktu yang dibutuhkan tampil dalam satu baris. Tampilan progres ini hanya muncul saat dijalankan di terminal. Karena itu, jika output dialihkan ke file, tidak ada apa pun yang tersimpan di file tersebut.

Saat mengambil file, tulis path jarak jauh di depan dan path lokal tempat menyimpan di belakangnya.

scp user@203.0.113.10:~/scp-test/report.txt ./downloads/
report.txt                                    100%   14     2.7KB/s   00:00

Jika path tujuan diakhiri nama file, bukan folder, file disimpan dengan nama itu. Setelah dikirim dengan perintah di bawah, report.txt ada di folder sisi penerima dengan nama report-1028.txt.

scp report.txt user@203.0.113.10:~/scp-test/report-1028.txt
report.txt                                    100%   14     4.6KB/s   00:00

🔲 Simulator perintah scp

Di simulator bawah ini Anda dapat mengetik sendiri perintah kirim, terima, dan salin folder lalu memeriksa output tiap opsi.

Simulator perintah scpOpenSSH 9.9
[root@server work]#
Hanya berjalan di dalam browser. Periksa file sisi jarak jauh di daftar sebelah kiri dan panggil lagi perintah sebelumnya dengan ↑↓.

2️⃣ Opsi perintah scp

Opsi ditulis tepat setelah scp, sebelum sumber. -P untuk port memakai huruf besar, sedangkan -p huruf kecil mempertahankan waktu dan izin, jadi salah menulis huruf akan menjalankan tindakan lain.

-l menetapkan batas atas kecepatan transfer dalam satuan Kbit/s. Tanpa opsi, file 20MB selesai ditransfer dalam waktu kurang dari 1 detik.

scp backup.tar.gz user@203.0.113.10:~/scp-test/
backup.tar.gz                                 100%   20MB  53.6MB/s   00:00

-l 8000 setara dengan sekitar 1,000KB per detik. Saat file yang sama dikirim dengan -l 8000, kecepatan pada tampilan progres menjadi 996.5KB/s dan transfer memakan waktu 20 detik.

scp -l 8000 backup.tar.gz user@203.0.113.10:~/scp-test/backup-l.tar.gz
backup.tar.gz                                 100%   20MB 996.5KB/s   00:20

-C mengompresi data pada koneksi SSH dengan cara yang sama seperti gzip. Saat file log 19MB berisi kalimat berulang dikirim masing-masing tiga kali, antara dua server ini pengiriman dengan -C sedikit lebih lambat.

PerintahFileWaktu eksekusiKecepatan pada tampilan progres
scp backup.tar.gz20MB0.68 detik53.6MB/s
scp -l 8000 backup.tar.gz20MB20.82 dtk996.5KB/s
scp access.log (3 kali)19MB0.79~0.89 dtk—
scp -C access.log (3 kali)19MB0.84~0.97 dtk—

Waktu eksekusi adalah waktu sejak perintah dimulai, terhubung, sampai transfer selesai. Manual ssh juga menjelaskan bahwa kompresi berguna pada jalur lambat dan justru memperlambat transfer di jaringan cepat.

-v menampilkan proses dari koneksi hingga transfer sebagai baris debug1, sehingga dipakai untuk mencari penyebab saat koneksi gagal atau berhenti di autentikasi. Output-nya panjang, jadi kami hanya memilih baris autentikasi dan transfer dengan grep.

scp -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'
Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending subsystem: sftp
Transferred: sent 2536, received 3248 bytes, in 0.1 seconds

Baris [Sending subsystem: sftp] berarti scp mengirim file dengan protokol SFTP. Mulai OpenSSH 9.0, scp memakai SFTP secara default. Jika ditambah -O, transfer memakai protokol SCP lama dan di tempat yang sama muncul [Sending command: scp -v -t].

scp -O -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'
Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending command: scp -v -t ~/scp-test/
Sending file modes: C0600 14 report.txt
Transferred: sent 2328, received 3036 bytes, in 0.1 seconds

📌 Opsi utama: hasil dari artikel ini

OpsiFungsiHasil di artikel ini
-PMenentukan port koneksi SSHPort 22 selesai mengirim report.txt, port 2222 yang tertutup berakhir dengan [Connection timed out]
-iMenentukan file kunci privat untuk autentikasi kunci publikPengiriman report.txt selesai dengan menentukan ~/.ssh/id_ed25519
-rMenyalin file dan subfolder di dalam folderDi sisi penerima folder css dan images tetap dengan struktur aslinya; tanpa opsi ini tidak terkirim karena error [not a regular file]
-pMempertahankan waktu modifikasi, waktu akses, dan izin sumberWaktu modifikasi dipertahankan; di sisi penerima artikel ini, izin 600 hanya bertahan pada file yang dikirim dengan -O -p
-CMengompresi data pada koneksi SSHPada log 19MB antara dua server artikel ini, pengiriman dengan opsi ini sedikit lebih lambat
-lMenetapkan batas atas kecepatan transfer dalam satuan Kbit/sDengan -l 8000, 20MB pada 996.5KB/s, 20.82 detik
-vMenampilkan proses dari koneksi hingga transfer sebagai baris debug1Transfer SFTP dipastikan dari baris [Sending subsystem: sftp]
-3Mentransfer data antara dua server jarak jauh melalui server yang menjalankan perintah (cara default mulai OpenSSH 8.7)Pengiriman report.txt selesai dengan dua folder di server yang sama sebagai sumber dan tujuan
-OMentransfer dengan protokol SCP lamaPada output -v muncul [Sending command: scp -v -t]; path berspasi perlu garis miring terbalik tambahan
-oMeneruskan opsi berformat ssh_config ke sshWaktu tunggu diatur 10 detik dengan ConnectTimeout=10 dan [Connection timed out] dipastikan

📎 Opsi lainnya: menurut manual resmi

OpsiFungsi
-qMematikan tampilan progres serta peringatan dan pesan diagnostik ssh
-JTerhubung dulu ke jump host, lalu dari sana mengatur penerusan TCP ke tujuan akhir (bentuk singkat pengaturan ProxyJump, beberapa hop dipisahkan koma)
-FMenentukan file lain sebagai file konfigurasi per pengguna ssh (diteruskan langsung ke ssh)
-4Memaksa hanya memakai alamat IPv4
-6Memaksa hanya memakai alamat IPv6

3️⃣ Menyalin folder dengan scp dan mempertahankan waktu

Jika folder ditentukan tanpa opsi, scp menampilkan error bahwa itu bukan file biasa dan tidak melakukan transfer.

scp site-files user@203.0.113.10:~/scp-test/
scp: local "site-files" is not a regular file
scp: failed to upload file site-files to ~/scp-test/

Dengan -r, file dan subfolder di dalam folder ikut disalin.

scp -r site-files user@203.0.113.10:~/scp-test/
logo.png                                      100%   48KB   4.7MB/s   00:00
style.css                                     100%   15     5.0KB/s   00:00
index.html                                    100%   15     5.2KB/s   00:00

Output hanya menampilkan nama file. Pada output find di sisi penerima, folder css dan images ada di bawah site-files dengan struktur aslinya.

ssh user@203.0.113.10 'cd ~/scp-test && find site-files'
site-files
site-files/images
site-files/images/logo.png
site-files/index.html
site-files/css
site-files/css/style.css

-r mengikuti tautan simbolik di dalam folder dan menyalin file aslinya, jadi untuk folder yang tautannya harus tetap berupa tautan, gunakan rsync -a.

-p mempertahankan waktu modifikasi, waktu akses, dan izin sumber. Sebelum dikirim, report.txt asli kami atur dengan waktu modifikasi 1 Oktober 2026 00:00 (UTC) dan izin 600. Zona waktu server penerima adalah UTC, sehingga ls di sisi pengirim juga dijalankan dengan TZ=UTC.

TZ=UTC ls -l report.txt
-rw------- 1 root root 14 Oct  1 00:00 report.txt
scp -p report.txt user@203.0.113.10:~/scp-test/report-p.txt
report.txt                                    100%   14     4.7KB/s   00:00
scp -O -p report.txt user@203.0.113.10:~/scp-test/report-Op.txt
report.txt                                    100%   14     4.2KB/s   00:00
ssh user@203.0.113.10 'ls -l ~/scp-test/report.txt ~/scp-test/report-p.txt ~/scp-test/report-Op.txt'
-rw------- 1 user user 14 Oct  1 00:00 /home/user/scp-test/report-Op.txt
-rw-rw-r-- 1 user user 14 Oct  1 00:00 /home/user/scp-test/report-p.txt
-rw-rw-r-- 1 user user 14 Oct 28 06:17 /home/user/scp-test/report.txt

report-p.txt yang dikirim dengan -p dan report-Op.txt yang dikirim dengan -O -p mempertahankan waktu asli, sedangkan report.txt yang dikirim tanpa opsi tersimpan dengan waktu pengiriman. Di server penerima, izin file yang dikirim lewat SFTP tersimpan 664 meski memakai -p, dan hanya file yang dikirim dengan protokol SCP lama (-O) yang mempertahankan 600.

Karena itu, untuk file yang izinnya harus sama dengan sumber, periksa izinnya dengan ls -l di sisi penerima setelah dikirim.

4️⃣ Menentukan port dan file kunci di scp

Untuk server yang tidak bisa diakses dengan port default 22 dan kunci default, tentukan sendiri port dan kuncinya sebelum mengirim. -P menentukan port koneksi SSH, dan -i menentukan file kunci privat untuk autentikasi kunci publik.

Di bawah ini contoh yang menentukan langsung port 22 dan file kunci. Jika port server sudah diubah, tulis nomor itu sebagai pengganti 22.

scp -P 22 -i ~/.ssh/id_ed25519 report.txt user@203.0.113.10:~/scp-test/
report.txt                                    100%   14     5.3KB/s   00:00

Tanpa -i, seperti ssh, scp memakai kunci bernama default di bawah ~/.ssh (id_rsa, id_ecdsa, id_ed25519, dan lainnya) secara berurutan.

Jika sering mengirim ke server yang sama, tulis alias di ~/.ssh/config dan masukkan alias saja di scp.

Host myserver
    HostName 203.0.113.10
    User user
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Nama pada baris Host menjadi alias, dan empat baris di bawahnya menggantikan alamat server, akun, port, dan file kunci. Perintah yang hanya memakai alias juga berakhir dengan hasil satu baris yang sama seperti saat alamat dan kunci ditulis lengkap.

scp report.txt myserver:~/scp-test/
report.txt                                    100%   14     4.2KB/s   00:00

-P, -i, dan alias semuanya memakai pengaturan koneksi ssh apa adanya, sehingga proses membuat kunci dan mendaftarkannya ke server juga sama seperti saat terhubung dengan perintah SSH.

5️⃣ Menyalin antarserver dengan scp

Meski sumber dan tujuan sama-sama server jarak jauh, Anda dapat menyalin dengan satu baris scp. Mulai OpenSSH 8.7, data ditransfer melalui server yang menjalankan perintah, dan cara ini adalah -3. Catatan rilis resmi menyebut alasan menjadikannya default adalah kredensial server tujuan tidak perlu disimpan di server sumber.

Pengukuran di bawah dijalankan dengan dua folder di server yang sama sebagai sumber dan tujuan. Jika server tujuan berbeda, ubah saja akun dan alamat di bagian belakang.

scp -3 user@203.0.113.10:~/scp-test/report.txt user@203.0.113.10:~/scp-test/copy3/
report.txt                                    100%   14     2.5KB/s   00:00

Ini seperti kantor pusat menerima dokumen antara dua cabang lalu mengirimkannya kembali.

Cara lama, ketika server sumber mengirim langsung ke server tujuan, ditentukan dengan -R. Cara ini mengharuskan server sumber dapat terhubung ke server tujuan tanpa kata sandi. Mulai OpenSSH 10.6, penggunaan -R memunculkan peringatan penghentian dukungan, dan versi berikutnya direncanakan mengabaikan opsi ini lalu menyalin dengan cara -3.

6️⃣ Perbandingan scp dan rsync

Untuk mengirim beberapa file sekali saja, scp sudah cukup, sedangkan untuk menyamakan folder yang sama berulang kali atau melanjutkan transfer yang terputus, gunakan perintah rsync. scp mengirim ulang semua file yang ditentukan setiap kali dijalankan, sedangkan rsync membandingkan sumber dan tujuan lalu hanya mentransfer file yang berubah.

Itemscprsync
Cakupan transferSemua file yang ditentukan setiap kali dijalankanHanya file yang berubah dibanding sumber
Menyimpan file yang baru diterima sebagian (--partial)❌✅
Menghapus file yang tidak ada di sumber (--delete)❌✅
Tautan simbolikMengikuti dan menyalin file aslinyaDengan -a tetap berupa tautan
Yang diperlukan di sisi penerimaAkses SSH dan server SFTPrsync terpasang di kedua sisi

7️⃣ Pesan error perintah scp dan solusinya

Saat scp gagal, penyebabnya langsung tampil di baris pertama output. Pada tiga kasus yang sengaja kami buat dengan file yang tidak ada, izin tulis, dan port yang salah, penyebabnya selalu tampil di baris pertama dan kode keluarnya juga tidak pernah 0.

🔲 No such file or directory

Jika mencoba mengambil file yang tidak ada di sisi jarak jauh, [No such file or directory] ditampilkan bersama path-nya.

scp user@203.0.113.10:~/scp-test/nofile.txt ./downloads/
scp: ~/scp-test/nofile.txt: No such file or directory

Saat mengirim, error yang sama muncul jika folder tujuan tidak ada. scp tidak membuat folder yang belum ada, jadi jalankan dulu mkdir -p lewat ssh untuk membuat folder.

scp report.txt user@203.0.113.10:~/scp-test/nodir/sub/
scp: dest open "scp-test/nodir/sub/": No such file or directory
scp: failed to upload file report.txt to ~/scp-test/nodir/sub/

🔲 Permission denied

Jika folder sisi penerima tidak punya izin tulis, [Permission denied] muncul setelah [dest open]. Di bawah ini hasil pengiriman ke folder readonly dengan izin 555.

scp report.txt user@203.0.113.10:~/scp-test/readonly/
scp: dest open "scp-test/readonly/report.txt": Permission denied
scp: failed to upload file report.txt to ~/scp-test/readonly/

Jika di depan [Permission denied] ada [akun@alamat server:] dan di dalam kurung ada metode autentikasi seperti publickey, koneksi ditolak pada tahap autentikasi. Teks ini adalah format yang dikeluarkan program ssh saat autentikasi gagal, jadi periksa dulu file kunci yang ditentukan dengan -i dan kunci publik yang terdaftar di server.

🔲 Connection timed out

Jika nomor port salah atau firewall memblokir port itu sehingga tidak ada respons, koneksi ditunggu lalu berakhir dengan [Connection timed out]. Di bawah ini hasil pengiriman ke port 2222 yang tertutup dengan waktu tunggu 10 detik.

scp -P 2222 -o ConnectTimeout=10 report.txt user@203.0.113.10:~/scp-test/
ssh: connect to host 203.0.113.10 port 2222: Connection timed out
scp: Connection closed

Jika error ini muncul, periksa dulu apakah nomor pada -P sama dengan port SSH server.

🔲 Spasi dan tilde (~) dalam path

Pada scp saat ini yang mentransfer lewat SFTP, path jarak jauh berspasi cukup diapit sekali dengan tanda kutip tunggal.

scp report.txt 'user@203.0.113.10:~/scp-test/my files/'
report.txt                                    100%   14     4.7KB/s   00:00

Saat -O ditambahkan ke perintah yang sama untuk mengirim dengan protokol SCP lama, perintah gagal dengan [ambiguous target]. Ini karena pada protokol SCP lama shell jarak jauh menafsirkan path sekali lagi.

scp -O report.txt 'user@203.0.113.10:~/scp-test/my files/'
scp: ambiguous target

Dalam hal ini, taruh garis miring terbalik di depan spasi agar shell jarak jauh juga membacanya sebagai satu kata.

scp -O report.txt 'user@203.0.113.10:~/scp-test/my\ files/'
report.txt                                    100%   14     4.5KB/s   00:00

Jika path setelah titik dua dimulai tanpa garis miring atau tilde, path diproses relatif terhadap folder home akun jarak jauh.

scp report.txt user@203.0.113.10:scp-test/report-rel.txt
report.txt                                    100%   14     5.6KB/s   00:00

Manual resmi menyarankan -O saat server SFTP lama tidak bisa mengubah path yang diawali tilde menjadi folder home. Dalam hal ini, menulis path relatif terhadap home tanpa tilde seperti di atas juga menyimpan ke tempat yang sama.

🔢 FAQ & Konten yang Direkomendasikan

Jika ada file dengan nama yang sama, file itu ditimpa file baru tanpa konfirmasi. Saat report.txt yang sama dikirim beberapa kali ke folder yang sama, transfer juga berjalan setiap kali tanpa pertanyaan. Karena itu, kirim file yang harus disimpan dengan nama lain di akhir path tujuan.

Jika Anda menaruh * di path jarak jauh dan mengapitnya dengan tanda kutip tunggal, semua file yang namanya cocok di server jarak jauh akan diambil. Saat mengambil report-*.txt dari server jarak jauh, enam file yang cocok ditransfer berurutan. Tanda kutip berguna agar shell server yang menjalankan perintah tidak menafsirkan * lebih dulu.

Dengan -B, scp berjalan dalam mode batch yang tidak meminta kata sandi atau frasa sandi. Menurut manual resmi, kata sandi tidak bisa dimasukkan dalam mode ini, jadi untuk tugas otomatis seperti cron, siapkan dulu autentikasi kunci.

🧭 Konten perintah jaringan yang direkomendasikan 13 artikel · 2 referensi
🗂️ Perintah jaringan
📄 Perintah ip 📄 Perintah netstat · ifconfig 📄 Perintah nmtui
📄 Perintah SSH 📄 Perintah rsync 📄 Perintah wget 📄 Perintah rz · sz 📄 Perintah scp
📄 Perintah host 📄 Perintah nslookup
📄 Perintah iptables 📄 Perintah firewall-cmd 📄 Perintah certbot

ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 8   +   6   =