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
rsyncatausftp.
Tabel berikut memberikan perbandingan teknis yang lebih rinci:
Prosedur
Sebelum memulai
Selesaikan persiapan dan pemeriksaan berikut sebelum mentransfer file.
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.
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.meataucurl ip.sbdi terminal lokal Anda.
Periksa firewall internal instans
Firewall di dalam sistem operasi instans (seperti
firewalldatauufw) mungkin juga memblokir koneksi.Masuk ke instans dan periksa status firewall.
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:scptidak efisien saat mentransfer file kecil dalam jumlah besar. Kami sarankan mengarsipkan file tersebut menjadi satu file terkompresi (seperti.tar.gz) sebelum mentransfer, atau menggunakanrsyncsebagai 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>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.txtke direktori/home/ecs-user/pada instans:sftp> put /opt/test.txt /home/ecs-userUntuk 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.txtdari instans ke direktori lokal/opt:sftp> get /home/ecs-user/test.txt /optUntuk 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 rsyncOpsi 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-zmungkin akan lebih cepat.
Opsi umum untuk lingkungan produksi
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.txtke direktori/home/ecs-userinstans dengan alamat IP publik1xx.xxx.xxx.121:sudo rsync -avz -e ssh /opt/test.txt ecs-user@1xx.xxx.xxx.121:/home/ecs-userUntuk menyinkronkan direktori lokal
/opt/test/dengan direktori/home/ecs-user/testpada instans dengan alamat IP publik1xx.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 60Ini membuat perintah
scpdanrsyncAnda 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
Untuk mencadangkan file penting yang Anda unggah ke instans ECS, lihat Buat Snapshot.
Jika Anda perlu mengunggah file ke instans Windows, Anda dapat menggunakan metode transfer file lainnya. Lihat Pilih Metode Transfer File.
Untuk mentransfer file dari Windows ke instans Linux, gunakan alat seperti WinSCP. Lihat Gunakan WinSCP untuk Mengunggah File dari Komputer Windows Lokal ke instans Linux.