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
rsyncatausftpuntuk file besar.
Perbandingan teknis terperinci:
Prosedur
Sebelum memulai
Lakukan pemeriksaan berikut sebelum mentransfer file.
-
Ambil Alamat IP publik instans
Instans harus memiliki bandwidth publik yang diaktifkan. Catat Alamat IP publik dari halaman Daftar instans di Konsol ECS.
-
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.meataucurl ip.sbdi terminal lokal Anda.
-
-
Periksa firewall internal
Firewall OS (seperti
firewalldatauufw) juga dapat memblokir koneksi.-
Login ke instans dan periksa status firewall.
-
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:scptidak efisien untuk banyak file kecil. Arsipkan menjadi file.tar.gzsebelum mentransfer, atau gunakanrsync.
# 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>
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.txtke/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.txtdari instans ke direktori lokal/optAnda:sftp> get /home/ecs-user/test.txt /opt -
Untuk mengunduh direktori
/home/ecs-user/test/dari instans ke direktori lokal/optAnda: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-zmungkin lebih cepat.
Opsi umum untuk lingkungan produksi
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.txtke direktori/home/ecs-userpada instans dengan Alamat IP publik1xx.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/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 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/configlokal 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 60Ini menyederhanakan perintah
scpdanrsyncAnda:# 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
-
Untuk backup file penting yang Anda unggah ke instans ECS, lihat Buat snapshot secara manual.
-
Jika Anda perlu mengunggah file ke instans Windows, gunakan metode transfer file lainnya. Lihat Memilih Metode Transfer File.
-
Untuk mentransfer file dari Windows ke instans Linux, gunakan alat seperti WinSCP. Lihat Transfer file ke instans Linux dengan WinSCP.