Lewati ke isi

Server & Infrastruktur

Cara Memindahkan File ke Server dengan SCP dan rsync

Bedanya SCP dan rsync, contoh perintah upload dan download file ke server lewat SSH, aturan garis miring rsync, dan kapan memilih masing-masing.

Terbit 5 menit baca

Jawaban singkat

SCP cocok untuk menyalin beberapa file sekali jalan dengan perintah singkat. rsync lebih tepat untuk folder besar, sinkron berulang, dan koneksi yang mudah putus karena hanya mengirim bagian yang berubah dan bisa melanjutkan transfer.

Daftar isi
  1. Apa yang perlu disiapkan?
  2. Cara memakai SCP
  3. Perintah dasar SCP
  4. Perubahan SCP di OpenSSH modern
  5. Cara memakai rsync
  6. Perintah dasar rsync
  7. Aturan garis miring di akhir sumber
  8. Opsi yang perlu hati-hati
  9. SCP atau rsync, apa bedanya?
  10. Kapan memilih SCP, kapan rsync?
  11. Pertanyaan yang sering diajukan

SCP dan rsync sama-sama memindahkan file antara komputermu dan server lewat SSH, jadi keduanya terenkripsi dan memakai login yang sama dengan terminal. Bedanya ada di cara kerja: SCP selalu menyalin ulang seluruh file, sedangkan rsync membandingkan dulu isi di kedua sisi lalu hanya mengirim yang berbeda.

Salah pilih jarang merusak data, tapi bisa membuang waktu. Menyalin folder upload 20 GB dengan SCP setiap kali ada perubahan berarti mengirim ulang seluruh isinya. Sebaliknya, memakai rsync dengan opsi --delete yang keliru bisa menghapus file di tujuan. Memahami keduanya membuat migrasi dan backup jauh lebih tenang.

Apa yang perlu disiapkan?

  • Akses SSH ke server (user, alamat IP atau hostname, dan port). Bila belum pernah login, ikuti cara login ke VPS pertama kali.
  • SSH key sangat disarankan agar tidak mengetik password berulang kali. Alasannya dibahas di SSH key vs password.
  • Untuk rsync: paket rsync harus terpasang di kedua sisi. Pasang dengan sudo apt install rsync atau sudo dnf install rsync.

Di Windows 10 dan 11, perintah scp sudah tersedia lewat OpenSSH bawaan. rsync tidak tersedia bawaan di Windows, jadi biasanya dipakai lewat WSL.

Cara memakai SCP

Perintah dasar SCP

Format umumnya scp [opsi] sumber tujuan. Sisi server ditulis user@host:path.

# Upload satu file ke server
scp laporan.pdf deploy@203.0.113.10:/home/deploy/

# Download file dari server ke folder saat ini
scp deploy@203.0.113.10:/var/backups/db.sql.gz .

# Upload folder secara rekursif
scp -r ./gambar deploy@203.0.113.10:/var/www/situs/

# Server dengan port SSH selain 22 (huruf P besar)
scp -P 2222 laporan.pdf deploy@203.0.113.10:/home/deploy/

Opsi lain yang berguna: -C untuk kompresi selama transfer, -i ~/.ssh/kunci untuk memilih SSH key tertentu, dan -l untuk membatasi kecepatan dalam Kbit/detik.

Perubahan SCP di OpenSSH modern

Sejak OpenSSH 9.0, perintah scp secara bawaan memakai protokol SFTP di belakang layar, bukan protokol SCP lama. Bagi pengguna, perintahnya tetap sama. Bila tersambung ke server yang sangat lama dan tidak mendukung SFTP, tambahkan opsi -O untuk memaksa protokol lama.

Cara memakai rsync

Perintah dasar rsync

# Upload folder ke server, tampilkan progres
rsync -avz --progress ./situs/ deploy@203.0.113.10:/var/www/situs/

# Download folder dari server
rsync -avz deploy@203.0.113.10:/var/www/situs/ ./cadangan-situs/

# Port SSH selain 22
rsync -avz -e "ssh -p 2222" ./situs/ deploy@203.0.113.10:/var/www/situs/

Arti opsinya:

  • -a (archive) menyalin rekursif sambil mempertahankan permission, waktu modifikasi, symlink, dan kepemilikan (kepemilikan hanya bisa dipertahankan bila dijalankan sebagai root di tujuan).
  • -v menampilkan nama file yang dikirim.
  • -z mengompres data selama transfer. Berguna untuk file teks, tidak banyak membantu untuk file yang sudah terkompresi seperti .zip atau .jpg.
  • -P gabungan --partial --progress, menyimpan file yang terkirim setengah agar bisa dilanjutkan.

Aturan garis miring di akhir sumber

Ini sumber kebingungan paling umum:

  • rsync -a situs/ tujuan/ menyalin isi folder situs ke dalam tujuan.
  • rsync -a situs tujuan/ menyalin folder situs, sehingga hasilnya tujuan/situs/.

Garis miring di akhir path tujuan tidak mengubah hasil. Yang menentukan adalah garis miring di sumber.

Opsi yang perlu hati-hati

# Uji dulu tanpa benar-benar mengirim
rsync -avzn --delete ./situs/ deploy@203.0.113.10:/var/www/situs/

# Kecualikan folder tertentu
rsync -avz --exclude 'node_modules' --exclude '.git' ./app/ deploy@203.0.113.10:/srv/app/

# Batasi kecepatan, satuan KiB per detik
rsync -avz --bwlimit=5000 ./arsip/ deploy@203.0.113.10:/srv/arsip/

SCP atau rsync, apa bedanya?

AspekSCPrsync
Cara kirimSelalu menyalin seluruh fileHanya mengirim file atau bagian yang berubah
Melanjutkan transfer putusTidak, mulai dari awalBisa, dengan --partial atau -P
Perlu dipasang di serverCukup server SSHPaket rsync di kedua sisi
Sinkron dan hapus file lamaTidak adaAda, lewat --delete
Kecualikan file atau folderTidak adaAda, lewat --exclude
Uji coba tanpa mengirimTidak adaAda, lewat -n
Tersedia di Windows bawaanYa (OpenSSH)Tidak, perlu WSL atau alat lain
Paling cocok untukFile tunggal, salin cepat sekali jalanFolder besar, migrasi, backup berkala

Kapan memilih SCP, kapan rsync?

Pilih SCP saat kamu hanya perlu mengirim satu atau beberapa file, misalnya file konfigurasi, dump database, atau installer. Perintahnya pendek, tersedia hampir di mana saja, dan tidak perlu memikirkan aturan garis miring.

Pilih rsync saat isinya banyak atau akan diulang. Migrasi website dengan ribuan file gambar, sinkron folder upload ke server cadangan, atau backup harian ke server lain adalah pekerjaan rsync. Pada pengiriman kedua dan seterusnya, rsync hanya mengirim selisihnya, sehingga jauh lebih cepat. Untuk koneksi yang sering putus, kemampuan melanjutkan transfer juga sangat menolong.

Untuk migrasi website utuh, rsync biasanya dipakai dua kali: sekali untuk salinan awal saat situs masih berjalan, lalu sekali lagi sesaat sebelum pindah DNS untuk mengejar file yang berubah. Langkah lengkapnya ada di panduan migrasi website ke VPS.

Untuk transfer yang lama, jalankan perintah di dalam sesi tmux atau screen agar tidak terhenti saat koneksi terminal putus.

Pertanyaan yang sering diajukan

Kenapa rsync bilang command not found di sisi server?

rsync harus terpasang di kedua sisi. Pasang paket rsync di server, lalu ulangi perintahnya.

Apakah rsync bisa dijadwalkan otomatis?

Bisa. Masukkan perintah rsync ke cron dengan SSH key tanpa interaksi, dan simpan log keluarannya agar mudah dicek bila ada kegagalan.

Mana yang lebih cepat untuk satu file besar?

Untuk pengiriman pertama, kecepatannya mirip karena keduanya dibatasi koneksi. rsync unggul bila transfer putus di tengah jalan atau file yang sama dikirim ulang setelah sedikit berubah.

Apakah ada cara grafis selain terminal?

Ada. Aplikasi klien SFTP seperti FileZilla atau WinSCP memakai login SSH yang sama dan cocok untuk pemindahan file sesekali.

Sumber & referensi

Baca juga