全部产品
Search
文档中心

Elastic Compute Service:Transfer file ke instance Linux menggunakan scp, sftp, atau rsync

更新时间:Sep 19, 2025

Gunakan alat baris perintah scp, sftp, dan rsync untuk mentransfer file dari sistem Linux atau macOS lokal ke instans Linux Elastic Compute Service (ECS). Panduan ini membantu Anda memilih alat yang sesuai kebutuhan Anda, mulai dari unggah file sederhana hingga sinkronisasi data berskala besar, serta menyediakan praktik terbaik untuk memastikan transfer yang efisien, andal, dan aman.

Pilih alat transfer

Sebelum memulai, pilih alat yang paling sesuai dengan skenario spesifik Anda.

  • scp: Untuk transfer file tunggal yang cepat. Alat ini sederhana dan mudah digunakan.

  • sftp: Menyediakan sesi interaktif mirip FTP untuk mengelola file, seperti menelusuri, menghapus, dan mengganti nama.

  • rsync: Untuk menyinkronkan direktori, cadangan, atau banyak file kecil. Sangat efisien dengan algoritma inkrementalnya.

  • Jaringan Tidak Stabil: Untuk file berukuran besar, gunakan fitur resumable transfer di rsync atau sftp.

Tabel berikut memberikan perbandingan teknis yang lebih rinci:

Perbandingan Detail scp, sftp, dan rsync

Fitur

scp

sftp

rsync

Performa

File Besar: Berperforma baik.

Jumlah file kecil banyak: Tidak efisien, karena setiap file dapat menimbulkan overhead koneksi baru.

File Besar: Berperforma baik dan mendukung pipelining.

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

Sangat efisien secara keseluruhan. Pada sinkronisasi berikutnya, alat ini hanya mentransfer perbedaan file, sehingga menghemat bandwidth dan waktu.

Resumable Transfer

Tidak didukung. Transfer harus dimulai dari awal jika terganggu.

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

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

Keunggulan Utama

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

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

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

Konsumsi Sumber Daya

Konsumsi CPU dan memori rendah.

Sesi interaktif mempertahankan koneksi SSH yang persisten, menghasilkan konsumsi sumber daya sedang.

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

Prosedur

Sebelum memulai

Selesaikan persiapan dan pemeriksaan berikut sebelum mentransfer file.

  1. Dapatkan alamat IP publik instans

    Instans harus memiliki alamat IP publik dengan bandwidth publik diaktifkan untuk menerima file dari komputer lokal Anda. Setelah diaktifkan, temukan dan catat alamat IP publik instans target dari halaman Instance list di konsol ECS. Semua perintah selanjutnya akan menggunakan alamat IP ini.

  2. Konfigurasikan aturan grup keamanan

    Proses transfer file menggunakan protokol SSH yang secara default menggunakan port 22. Pastikan grup keamanan instans mengizinkan lalu lintas TCP inbound pada port ini dari alamat IP lokal Anda.

    • Action: Allow

    • Protocol Type: Custom TCP

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

    • Source: Untuk keamanan, kami sarankan Anda mengatur ini ke alamat IP publik lokal Anda.

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

    Firewall di dalam sistem operasi instans (seperti firewalld atau ufw) mungkin juga memblokir koneksi.

    1. Masuk ke instans dan periksa status firewall.

    2. Jika firewall aktif, pastikan firewall tersebut mengizinkan layanan SSH atau port 22. Untuk membuka port atau layanan tertentu, lihat dokumentasi yang relevan untuk sistem operasi Anda.

Gunakan scp untuk mentransfer file

Secure Copy Protocol (scp) adalah perintah sederhana untuk menyalin file dan direktori antara komputer lokal dan host remote.

Unggah file atau direktori ke sebuah instans

Untuk mengunggah file atau folder ke instans Anda, jalankan perintah berikut dari terminal lokal Anda. Anda akan diminta untuk memasukkan kata sandi.

# Unggah file tunggal ke instans
sudo scp <local_file_path> <instans_username>@<public_ip_address>:<remote_directory_path>

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

Contoh:

Untuk mengunggah file lokal /opt/test.txt ke direktori /home/ecs-user/ instans dengan alamat IP publik 1xx.xxx.xxx.121, jalankan perintah berikut:

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

Unduh file atau direktori dari sebuah instans

Untuk mengunduh file dari instans ke mesin lokal Anda, jalankan perintah berikut di terminal lokal Anda. Anda akan diminta untuk memasukkan kata sandi.

Catatan:scp tidak efisien saat mentransfer file kecil dalam jumlah besar. Kami sarankan mengarsipkan file tersebut menjadi satu file terkompresi (seperti .tar.gz) sebelum mentransfer, atau menggunakan rsync sebagai gantinya.
# Unduh file tunggal ke mesin lokal Anda
sudo scp <instans_username>@<public_ip_address>:<remote_file_path> <local_directory_path>

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

Contoh:

Untuk mengunduh file /home/ecs-user/test.txt dari instans dengan alamat IP publik 1xx.xxx.xxx.121 ke direktori lokal /opt/, jalankan perintah berikut:

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 pengelolaan file tingkat lanjut di server remote.

Hubungkan ke instans

Untuk membuat koneksi sftp, jalankan perintah berikut di terminal lokal Anda. Setelah terhubung, prompt terminal berubah menjadi sftp>.

sudo sftp <instance_username>@<public_ip_address>

Perintah interaktif SFTP umum

Pada prompt sftp>, Anda dapat menggunakan perintah berikut:

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

  • Operasi lokal: lls (daftar direktori lokal), lcd (ubah direktori lokal), lpwd (tampilkan jalur lokal saat ini).

Unggah file atau seluruh direktori ke sebuah instans

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

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

Contoh:

  • Untuk mengunggah file lokal /opt/test.txt ke direktori /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 sebuah instans

# Unduh file tunggal
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:

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

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

Lanjutkan transfer

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

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

# Lanjutkan unduhan
sftp> reget <remote_file_path> <local_file_path>
Catatan: Resumable transfer SFTP hanya efektif untuk file tunggal. Jika transfer direktori terganggu, sebaiknya keluar dari SFTP dan menggunakan rsync untuk sinkronisasi yang efisien.

Memutuskan sesi

Setelah selesai dengan tugas Anda, gunakan perintah quit atau bye untuk keluar dari sesi sftp.

Gunakan rsync untuk sinkronisasi file dan direktori yang efisien

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

Instal alat

Pastikan rsync terinstal di mesin lokal Anda dan di instans ECS.

# 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 (arsip): Mode arsip, setara dengan -rlptgoD. Opsi ini menyinkronkan secara rekursif dan mempertahankan semua atribut file, seperti izin dan stempel waktu.

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

  • -z (kompres): Untuk menghemat bandwidth, opsi ini mengompres data selama transfer. Namun, pada koneksi bandwidth tinggi, kompresi CPU dapat menjadi hambatan, sehingga meniadakan opsi -z mungkin akan lebih cepat.

Opsi umum untuk lingkungan produksi

  • --delete: Menjadikan 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 sudah benar sebelum menggunakan flag ini, idealnya dengan menjalankan --dry-run terlebih dahulu.

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

  • --bwlimit=KBPS: Membatasi bandwidth transfer dalam KB/s. Opsi ini mencegah rsync mengonsumsi semua bandwidth yang tersedia dan memengaruhi layanan lainnya.

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

    Penting

    Penting: Sangat disarankan untuk menggunakan opsi ini untuk meninjau perintah Anda sebelum menjalankan operasi apa pun yang mencakup --delete.

  • --partial: Mengaktifkan resumable transfer. Jika transfer terganggu, rsync akan menyimpan file yang ditransfer sebagian, memungkinkan eksekusi berikutnya dapat dilanjutkan dari titik gangguan.

Unggah atau sinkronkan file dan direktori ke instans ECS

Untuk mengunggah file ke instans, jalankan perintah berikut di mesin lokal Anda. Anda akan diminta untuk memasukkan kata sandi.

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 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 sebuah instans

Untuk mengunduh file dari instans ke mesin lokal Anda, jalankan perintah berikut di terminal lokal Anda. Anda akan diminta untuk memasukkan kata sandi.

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

Aplikasi di lingkungan produksi

  • Menangani file kecil dengan jumlah besar: arsipkan terlebih dahulu, lalu transfer

    Mentransfer direktori dengan ribuan file kecil tidaklah efisien dengan alat apa pun karena adanya overhead koneksi dan metadata untuk setiap file. Praktik terbaik adalah mengarsipkan dan mengompres 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 (misalnya, my-prod-server) di file lokal ~/.ssh/config.

    # Tambahkan yang 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 membuat perintah scp dan rsync Anda menjadi lebih sederhana:

    # 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 besar): scp -P <nomor_port> ...

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

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

  • 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, ubah opsi -e: rsync -e "ssh -i <path_to_private_key>" ...

Referensi