All Products
Search
Document Center

Elastic Compute Service:Transfer file ke instans Linux dengan scp, sftp, atau rsync

Last Updated:Apr 28, 2026

Pilih scp, sftp, atau rsync untuk mentransfer file antara sistem Linux atau macOS lokal dan instans ECS Linux melalui SSH.

Pilih alat transfer

Pilih alat yang paling sesuai dengan skenario Anda.

  • scp: Transfer file tunggal yang cepat dengan sintaks sederhana.

  • sftp: Sesi interaktif mirip FTP untuk menelusuri, menghapus, dan mengganti nama file.

  • rsync: Sinkronisasi direktori, pencadangan, atau banyak file kecil. Algoritma inkremental hanya mentransfer perbedaan.

  • Jaringan Tidak Stabil: Gunakan transfer yang dapat dilanjutkan di rsync atau sftp untuk file besar.

Perbandingan teknis terperinci:

Perbandingan terperinci scp, sftp, dan rsync

Fitur

scp

sftp

rsync

Kinerja

File besar: Berkinerja baik.

Jumlah besar file kecil: Tidak efisien karena setiap file menimbulkan overhead koneksi baru.

File besar: Berkinerja baik dan mendukung pipelining.

Jumlah besar file kecil: Lebih baik daripada scp, tetapi tidak seefisien rsync.

Efisiensi keseluruhan tinggi. Untuk sinkronisasi berikutnya, hanya mentransfer perbedaan file sehingga menghemat bandwidth dan waktu.

Transfer yang Dapat Dilanjutkan

Tidak didukung. Transfer harus dimulai dari awal jika terputus.

Melanjutkan transfer file tunggal dengan perintah reget (unduh) dan reput (unggah).

Didukung. Opsi --partial atau --append-verify memungkinkan Anda melanjutkan transfer baik untuk file maupun direktori.

Keunggulan Utama

Sintaks sederhana. Termasuk secara default di sebagian besar sistem, menjadikannya ideal untuk transfer file sekali jalan yang cepat.

Menawarkan sesi interaktif untuk mengelola file di server remote dengan perintah seperti ls, rm, dan mkdir.

Sinkronisasi inkremental. Mendukung opsi lanjutan seperti penyaringan, penghapusan, pembatasan kecepatan, dan kompresi.

Konsumsi Resource

Konsumsi CPU dan memori rendah.

Sesi interaktif mempertahankan koneksi SSH persisten, menghasilkan konsumsi resource menengah.

Mengonsumsi sejumlah CPU dan memori saat membandingkan perbedaan file, terutama ketika memindai jumlah file yang besar.

Prosedur

Sebelum memulai

Lakukan pemeriksaan berikut sebelum mentransfer file.

  1. Ambil Alamat IP publik instans

    Instans harus memiliki bandwidth publik yang diaktifkan. Catat Alamat IP publik dari halaman Daftar instans di Konsol ECS.

  2. Konfigurasikan aturan grup keamanan

    Alat-alat ini menggunakan SSH (port 22 secara default). Pastikan grup keamanan mengizinkan lalu lintas TCP inbound pada port ini dari Alamat IP lokal Anda.

    • Action: Allow

    • Jenis Protokol: Custom TCP

    • Rentang Port: 22/22 (atau port SSH kustom Anda)

    • Source: Atur ke Alamat IP publik lokal Anda demi keamanan.

      Dapatkan IP Anda dengan menjalankan curl ifconfig.me atau curl ip.sb di terminal lokal Anda.
  3. Periksa firewall internal

    Firewall OS (seperti firewalld atau ufw) juga dapat memblokir koneksi.

    1. Login ke instans dan periksa status firewall.

    2. Jika firewall aktif, pastikan firewall tersebut mengizinkan SSH atau port 22. Untuk membuka port atau layanan, lihat dokumentasi OS Anda.

Gunakan scp untuk mentransfer file

Secure Copy Protocol (scp) menyalin file dan direktori antara komputer lokal dan host jarak jauh.

Unggah file atau direktori ke instans

Unggah file atau folder ke instans Anda. Anda akan diminta memasukkan password.

# Unggah satu file ke instans
sudo scp <local_file_path> <instance_username>@<public_ip_address>:<remote_directory_path>

# Unggah direktori lokal ke instans
sudo scp -r <local_directory_path> <instance_username>@<public_ip_address>:<remote_directory_path>

Contoh:

Unggah /opt/test.txt ke /home/ecs-user/ pada instans dengan IP publik 1xx.xxx.xxx.121:

sudo scp /opt/test.txt ecs-user@1xx.xxx.xxx.121:/home/ecs-user/

Unduh file atau direktori dari instans

Unduh file dari instans Anda. Anda akan diminta memasukkan password.

Catatan: scp tidak efisien untuk banyak file kecil. Arsipkan menjadi file .tar.gz sebelum mentransfer, atau gunakan rsync.
# Unduh satu file ke mesin lokal Anda
sudo scp <instance_username>@<public_ip_address>:<remote_file_path> <local_directory_path>

# Unduh direktori dari instans ke mesin lokal Anda
sudo scp -r <instance_username>@<public_ip_address>:<remote_directory_path> <local_directory_path>

Contoh:

Unduh /home/ecs-user/test.txt dari instans dengan IP publik 1xx.xxx.xxx.121 ke direktori lokal /opt/:

sudo scp ecs-user@1xx.xxx.xxx.121:/home/ecs-user/test.txt /opt/

Gunakan sftp untuk transfer file interaktif

SSH File Transfer Protocol (SFTP) memulai sesi interaktif untuk manajemen file di server jarak jauh.

Hubungkan ke instans

Buat koneksi sftp. Setelah terhubung, prompt berubah menjadi sftp>.

sudo sftp <instance_username>@<public_ip_address>

Perintah interaktif SFTP umum

Di prompt sftp>, Anda dapat menggunakan perintah berikut:

  • Operasi remote: ls (daftar direktori remote), cd (ganti direktori remote), pwd (tampilkan path saat ini di remote), mkdir (buat direktori remote), rm (hapus file remote), rename (ganti nama file remote).

  • Operasi lokal: lls (daftar direktori lokal), lcd (ganti direktori lokal), lpwd (tampilkan path saat ini di lokal).

Unggah file atau direktori ke instans

# Unggah satu file
sftp> put <local_file_path> <remote_directory_path>

# Unggah seluruh direktori
sftp> put -r <local_directory_path> <remote_directory_path>

Contoh:

  • Unggah /opt/test.txt ke /home/ecs-user/ pada instans:

    sftp> put /opt/test.txt /home/ecs-user
  • Untuk mengunggah direktori lokal /opt/test/ ke direktori /home/ecs-user/ pada instans:

    sftp> put -r /opt/test/ /home/ecs-user/

Unduh file atau seluruh direktori dari instans

# Unduh satu file
sftp> get <remote_file_path> <local_directory_path>

# Unduh seluruh direktori
sftp> get -r <remote_directory_path> <local_directory_path>

Contoh:

  • Untuk mengunduh file /home/ecs-user/test.txt dari instans ke direktori lokal /opt Anda:

    sftp> get /home/ecs-user/test.txt /opt
  • Untuk mengunduh direktori /home/ecs-user/test/ dari instans ke direktori lokal /opt Anda:

    sftp> get -r /home/ecs-user/test/ /opt

Lanjutkan transfer

Jika transfer file besar terputus, Anda dapat menggunakan perintah reput (unggah) dan reget (unduh) untuk melanjutkan transfer dari titik terakhir.

# Lanjutkan unggahan
sftp> reput <local_file_path> <remote_file_path>

# Lanjutkan unduhan
sftp> reget <remote_file_path> <local_file_path>
Catatan: Transfer yang dapat dilanjutkan SFTP hanya efektif untuk file tunggal. Jika transfer direktori terputus, kami sarankan keluar dari SFTP dan gunakan rsync untuk sinkronisasi yang efisien.

Putuskan sesi

Saat Anda telah menyelesaikan tugas, gunakan perintah quit atau bye untuk keluar dari sesi sftp.

Gunakan rsync untuk sinkronisasi file dan direktori

rsync ideal untuk transfer berskala besar, inkremental, atau berulang.

Instal alat

Pastikan rsync telah diinstal di mesin lokal dan instans Anda.

# Pada CentOS / Alibaba Cloud Linux
sudo yum install -y rsync

# Pada Debian / Ubuntu
sudo apt-get update && sudo apt-get install -y rsync

Opsi umum

Penggunaan standar rsync sering kali mencakup opsi -avz:

  • -a (archive): Mode arsip, setara dengan -rlptgoD. Melakukan sinkronisasi rekursif dan mempertahankan semua atribut file, seperti izin dan timestamp.

  • -v (verbose): Menampilkan informasi detail tentang proses transfer.

  • -z (compress): Untuk menghemat bandwidth, data dikompresi selama transfer. Namun, pada tautan bandwidth tinggi, kompresi CPU dapat menjadi bottleneck, dan menghilangkan -z mungkin lebih cepat.

Opsi umum untuk lingkungan produksi

  • --delete: Membuat direktori tujuan menjadi cerminan persis dari sumber dengan menghapus file apa pun di tujuan yang tidak ada di sumber.

    Penting

    Penting: Ini adalah operasi berisiko tinggi. Selalu pastikan perintah Anda benar sebelum menggunakan flag ini, sebaiknya dengan menjalankan terlebih dahulu menggunakan --dry-run.

  • --exclude='PATTERN': Mengecualikan file atau direktori yang cocok dengan pola tertentu, seperti --exclude='*.log' atau --exclude='node_modules/'.

  • --bwlimit=KBPS: Membatasi bandwidth transfer dalam KB/detik. Ini mencegah rsync menghabiskan seluruh bandwidth yang tersedia dan memengaruhi layanan lain.

  • --dry-run atau -n: Mensimulasikan eksekusi. Menunjukkan file mana yang akan ditransfer tanpa benar-benar memindahkan data.

    Penting

    Penting: Kami sangat menyarankan menggunakan opsi ini untuk meninjau perintah Anda sebelum menjalankan operasi apa pun yang mencakup --delete.

  • --partial: Mengaktifkan transfer yang dapat dilanjutkan. Jika transfer terputus, rsync menyimpan file yang telah ditransfer sebagian, memungkinkan eksekusi berikutnya dilanjutkan dari titik terakhir.

Unggah atau sinkronkan file dan direktori ke instans ECS

Untuk mengunggah file ke instans, jalankan perintah berikut dari mesin lokal Anda. Anda akan diminta memasukkan password.

sudo rsync -avz -e ssh <local_path> <logon_username>@<public_ip_address>:<remote_path>

Contoh:

  • Untuk mengunggah file /opt/test.txt ke direktori /home/ecs-user pada instans dengan Alamat IP publik 1xx.xxx.xxx.121:

    sudo rsync -avz -e ssh /opt/test.txt ecs-user@1xx.xxx.xxx.121:/home/ecs-user
  • Untuk menyinkronkan direktori lokal /opt/test/ dengan direktori /home/ecs-user/test pada instans dengan Alamat IP publik 1xx.xxx.xxx.121:

    sudo rsync -avz -e ssh /opt/test/ ecs-user@1xx.xxx.xxx.121:/home/ecs-user/test

Unduh atau sinkronkan file dan direktori dari instans

Untuk mengunduh file dari instans ke mesin lokal Anda, jalankan perintah berikut secara lokal. Anda akan diminta memasukkan password.

sudo rsync -avz -e ssh <instance_username>@<public_ip_address>:<remote_path> <local_path>

Terapkan di lingkungan produksi

  • Tangani banyak file kecil: arsipkan terlebih dahulu, lalu transfer

    Mentransfer direktori dengan ribuan file kecil tidak efisien dengan alat apa pun karena overhead koneksi dan metadata untuk setiap file. Praktik terbaik adalah mengarsipkan dan mengompresi direktori menjadi satu file (misalnya, .tar.gz) di mesin sumber, mentransfer arsip tersebut, lalu mengekstraknya di mesin tujuan.

  • Sederhanakan perintah dengan file konfigurasi SSH

    Anda dapat menyederhanakan perintah koneksi dan transfer dengan membuat alias untuk instans ECS Anda (misalnya, my-prod-server) di file ~/.ssh/config lokal Anda.

    # Tambahkan berikut ke ~/.ssh/config
    Host my-prod-server
        HostName 118.178.x.x
        User ecs-user
        Port 22
        IdentityFile ~/.ssh/id_rsa_aliyun
        ServerAliveInterval 60

    Ini menyederhanakan perintah scp dan rsync Anda:

    # Perintah asli:
    sudo scp -i ~/.ssh/id_rsa_aliyun local.txt ecs-user@118.178.x.x:/remote/
    # Perintah baru:
    sudo scp local.txt my-prod-server:/remote/
    
    # Perintah asli:
    sudo rsync -avz -e "ssh -i ~/.ssh/id_rsa_aliyun" local_dir/ ecs-user@118.178.x.x:/remote_dir/
    # Perintah baru:
    sudo rsync -avz local_dir/ my-prod-server:/remote_dir/

FAQ

  • Bagaimana cara mentransfer file menggunakan port tertentu?

    • scp: Untuk menentukan port, gunakan opsi -P (huruf kapital): scp -P <port_number> ...

    • sftp: Untuk menentukan port, gunakan opsi -P (huruf kapital): sftp -P <port_number> ...

    • rsync: Untuk menentukan port untuk SSH, modifikasi opsi -e: rsync -avz -e "ssh -p <port_number>" ...

  • Bagaimana cara menentukan file kunci privat saat menghubungkan ke instans dengan pasangan kunci?

    • scp: Untuk menentukan file kunci privat, gunakan opsi -i: scp -i <path_to_private_key> ...

    • sftp: Untuk menentukan file kunci privat, gunakan opsi -oIdentityFile: sftp -oIdentityFile=<path_to_private_key> ...

    • rsync: Untuk menentukan kunci privat untuk SSH, modifikasi opsi -e: rsync -e "ssh -i <path_to_private_key>" ...

Referensi