Tüm Ürünler
Search
Belge Merkezi

Elastic Compute Service:Transfer files to a Linux instance with scp, sftp, or rsync

Son Güncelleme:Oct 10, 2026

Yerel bir Linux veya macOS sistemi ile SSH üzerinden bir ECS Linux örneği arasında dosya aktarmak için scp, sftp veya rsync araçlarından birini seçin.

Aktarım aracı seçimi

Senaryonuz için en uygun aracı belirleyin.

  • scp: Hızlı, tek dosyalı aktarımlar için uygundur. Söz dizimi basittir.

  • sftp: Dosyalara göz atmak, silmek ve yeniden adlandırmak için FTP benzeri etkileşimli oturum sunar.

  • rsync: Dizin senkronizasyonu, yedekleme veya çok sayıda küçük dosya için idealdir. Artımlı algoritması sayesinde yalnızca farklılıkları aktarır.

  • Kararsız Ağlar: Büyük dosyalar için rsync veya sftp içindeki kaldığı yerden devam etme (resumable transfer) özelliğini kullanın.

Ayrıntılı teknik karşılaştırma:

scp, sftp ve rsync'in ayrıntılı karşılaştırması


Özellik


scp


sftp


rsync


Performans

Büyük dosyalar: İyi performans gösterir.

Çok sayıda küçük dosya: Her dosya yeni bir bağlantı ek yüküne neden olabileceğinden verimsizdir.

Büyük dosyalar: İyi performans gösterir ve ardışık düzenlemeyi (pipelining) destekler.

Çok sayıda küçük dosya: scp değerinden daha iyidir ancak rsync kadar verimli değildir.


Genel verimliliği yüksektir. Sonraki senkronizasyonlarda yalnızca dosya farklılıklarını aktararak bant genişliğinden ve zamandan tasarruf sağlar.


Kaldığı Yerden Devam Etme


Desteklenmez. Aktarım kesintiye uğrarsa işlemin baştan başlaması gerekir.

reget (indirme) ve reput (yükleme) komutlarıyla tek dosyalı aktarımlarda kaldığı yerden devam eder.


Desteklenir. --partial veya --append-verify seçenekleri, hem dosyalar hem de dizinler için aktarımı kaldığı yerden sürdürmenize olanak tanır.


Temel Avantaj


Söz dizimi basittir. Çoğu sistemde varsayılan olarak bulunduğundan hızlı, tek seferlik dosya aktarımları için idealdir.

ls, rm ve mkdir gibi komutlarla uzak sunucudaki dosyaları yönetmek için etkileşimli bir oturum sunar.


Artımlı senkronizasyon sağlar. Filtreleme, silme, hız sınırlama ve sıkıştırma gibi gelişmiş seçenekleri destekler.


Kaynak Tüketimi


Düşük CPU ve bellek tüketimi.


Etkileşimli oturum kalıcı bir SSH bağlantısını koruduğundan kaynak tüketimi orta düzeydedir.


Özellikle çok sayıda dosyayı tararken dosya farklılıklarını karşılaştırmak için belirli miktarda CPU ve bellek tüketir.

Yordam

Başlamadan önce

Dosya aktarmadan önce aşağıdaki kontrolleri tamamlayın.

  1. Örneğin genel IP adresini alın

    Örnekte genel bant genişliği etkinleştirilmiş olmalıdır. ECS konsolundaki Instance list sayfasından genel IP adresini not edin.

  2. Güvenlik grubu kurallarını yapılandırın

    Bu araçlar SSH'yi (varsayılan olarak 22 numaralı bağlantı noktası) kullanır. Güvenlik grubunun, yerel IP adresinizden bu bağlantı noktasına gelen TCP trafiğine izin verdiğinden emin olun.

    • Action: Allow

    • Protocol Type: Custom TCP

    • Port Range: 22/22 (veya özel SSH bağlantı noktanız)

    • Source: Güvenlik amacıyla yerel genel IP adresinizi girin.

      Yerel terminalinizde curl ifconfig.me veya curl ip.sb komutunu çalıştırarak IP adresinizi öğrenebilirsiniz.
  3. İç güvenlik duvarını kontrol edin

    İşletim sistemi güvenlik duvarı (firewalld veya ufw gibi) da bağlantıyı engelleyebilir.

    1. Örneğe giriş yapın ve güvenlik duvarı durumunu kontrol edin.

    2. Güvenlik duvarı etkinse SSH'ye veya 22 numaralı bağlantı noktasına izin verdiğinden emin olun. Bir bağlantı noktasını veya hizmeti açmak için işletim sisteminizin belgelerine bakın.

scp kullanarak dosya aktarma

Secure Copy Protocol (scp), yerel bilgisayar ile uzak ana bilgisayar arasında dosya ve dizin kopyalar.

Bir örneğe dosya veya dizin yükleme

Bir dosyayı veya klasörü örneğinize yükleyin. Şifreniz istenecektir.

# Upload a single file to the instance
sudo scp <local_file_path> <instance_username>@<public_ip_address>:<remote_directory_path>

# Upload a local directory to the instance
sudo scp -r <local_directory_path> <instance_username>@<public_ip_address>:<remote_directory_path>

Örnek:

Genel IP adresi 1xx.xxx.xxx.121 olan bir örnekteki /home/ecs-user/ dizinine /opt/test.txt dosyasını yükleyin:

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

Bir örnekten dosya veya dizin indirme

Örneğinizden bir dosya indirin. Şifreniz istenecektir.

Note : scp , çok sayıda küçük dosya için verimsizdir. Bunları aktarmadan önce .tar.gz dosyası olarak arşivleyin veya rsync kullanın.
# Download a single file to your local machine
sudo scp <instance_username>@<public_ip_address>:<remote_file_path> <local_directory_path>

# Download a directory from the instance to your local machine
sudo scp -r <instance_username>@<public_ip_address>:<remote_directory_path> <local_directory_path>

Örnek:

Genel IP adresi 1xx.xxx.xxx.121 olan bir örnekten /home/ecs-user/test.txt dosyasını yerel /opt/ dizinine indirin:

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

Etkileşimli dosya aktarımları için sftp kullanma

SSH File Transfer Protocol (SFTP), uzak sunucuda dosya yönetimi için etkileşimli bir oturum başlatır.

Örneğe bağlanma

Bir sftp bağlantısı kurun. Bağlantı kurulduğunda istem sftp> olarak değişir.

sudo sftp <instance_username>@<public_ip_address>

Yaygın SFTP etkileşimli komutları

sftp> isteminde aşağıdaki komutları kullanabilirsiniz:

  • Uzak işlemler: ls (uzak dizini listele), cd (uzak dizini değiştir), pwd (uzak geçerli yolu göster), mkdir (uzak dizin oluştur), rm (uzak dosyayı sil), rename (uzak dosyayı yeniden adlandır).

  • Yerel işlemler: lls (yerel dizini listele), lcd (yerel dizini değiştir), lpwd (yerel geçerli yolu göster).

Bir örneğe dosya veya dizin yükleme

# Upload a single file
sftp> put <local_file_path> <remote_directory_path>

# Upload an entire directory
sftp> put -r <local_directory_path> <remote_directory_path>

Örnekler:

  • /opt/test.txt dosyasını örnekteki /home/ecs-user/ dizinine yükleyin:

    sftp> put /opt/test.txt /home/ecs-user
  • Yerel /opt/test/ dizinini örnekteki /home/ecs-user/ dizinine yüklemek için:

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

Bir örnekten dosya veya tüm dizinleri indirme

# Download a single file
sftp> get <remote_file_path> <local_directory_path>

# Download an entire directory
sftp> get -r <remote_directory_path> <local_directory_path>

Örnekler:

  • /home/ecs-user/test.txt dosyasını örnekten yerel /opt dizininize indirmek için:

    sftp> get /home/ecs-user/test.txt /opt
  • /home/ecs-user/test/ dizinini örnekten yerel /opt dizininize indirmek için:

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

Aktarımı kaldığı yerden devam ettirme

Büyük bir dosya aktarımı kesintiye uğrarsa, reput (yükleme) ve reget (indirme) komutlarını kullanarak aktarımı kaldığı yerden sürdürebilirsiniz.

# Resume an upload
sftp> reput <local_file_path> <remote_file_path>

# Resume a download
sftp> reget <remote_file_path> <local_file_path>
Note : SFTP'de kaldığı yerden devam etme özelliği yalnızca tek dosyalar için etkilidir. Bir dizin aktarımı kesintiye uğrarsa SFTP'den çıkmanızı ve verimli senkronizasyon için rsync kullanmanızı öneririz.

Oturumu sonlandırma

İşlemlerinizi tamamladıktan sonra quit veya bye komutunu kullanarak sftp oturumundan çıkın.

Dosya ve dizin senkronizasyonu için rsync kullanma

rsync , büyük ölçekli, artımlı veya tekrarlayan aktarımlar için idealdir.

Aracı yükleme

Hem yerel makinenizde hem de örnekte rsync yüklü olduğundan emin olun.

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

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

Yaygın seçenekler

rsync standart kullanımı genellikle -avz seçeneklerini içerir:

  • -a (archive): Arşiv modu, -rlptgoD seçeneğine eşdeğerdir. Özyinelemeli olarak senkronize eder ve izinler ile zaman damgaları gibi tüm dosya niteliklerini korur.

  • -v (verbose): Aktarım sürecine ilişkin ayrıntılı bilgileri görüntüler.

  • -z (compress): Bant genişliğinden tasarruf etmek için verileri aktarım sırasında sıkıştırır. Ancak yüksek bant genişliğine sahip bağlantılarda CPU sıkıştırması dar boğaz oluşturabilir ve -z seçeneğinin atlanması daha hızlı olabilir.

Üretim ortamları için yaygın seçenekler

  • --delete : Hedef dizini kaynağın tam bir yansıması haline getirerek hedefte bulunan ancak kaynakta olmayan dosyaları siler.

    Önemli

    Important: Bu işlem yüksek risklidir. Bu bayrağı kullanmadan önce komutunuzun doğru olduğunu doğrulayın; tercihen önce --dry-run ile çalıştırın.

  • --exclude='PATTERN' : Belirtilen desenle eşleşen dosya veya dizinleri hariç tutar; örneğin --exclude='*.log' veya --exclude='node_modules/'.

  • --bwlimit=KBPS : Aktarım bant genişliğini KB/s cinsinden sınırlar. Bu, rsync işleminin mevcut tüm bant genişliğini tüketmesini ve diğer hizmetleri etkilemesini önler.

  • --dry-run veya -n : Çalıştırmayı simüle eder. Herhangi bir veri taşımadan hangi dosyaların aktarılacağını gösterir.

    Önemli

    Important: --delete içeren herhangi bir işlemi çalıştırmadan önce komutunuzu incelemek için bu seçeneği kullanmanızı şiddetle öneririz.

  • --partial : Kaldığı yerden devam eden aktarımları etkinleştirir. Bir aktarım kesintiye uğrarsa rsync kısmen aktarılmış dosyayı saklar; böylece sonraki çalıştırma kaldığı yerden devam edebilir.

ECS örneğine dosya ve dizin yükleme veya senkronize etme

Dosyaları bir örneğe yüklemek için yerel makinenizden aşağıdaki komutu çalıştırın. Şifrenizi girmeniz istenecektir.

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

Örnekler:

  • /opt/test.txt dosyasını genel IP adresi 1xx.xxx.xxx.121 olan bir örneğin /home/ecs-user dizinine yüklemek için:

    sudo rsync -avz -e ssh /opt/test.txt ecs-user@1xx.xxx.xxx.121:/home/ecs-user
  • Yerel /opt/test/ dizinini genel IP adresi 1xx.xxx.xxx.121 olan örnekteki /home/ecs-user/test diziniyle senkronize etmek için:

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

Bir örnekten dosya ve dizin indirme veya senkronize etme

Dosyaları bir örnekten yerel makinenize indirmek için aşağıdaki komutu yerel olarak çalıştırın. Şifrenizi girmeniz istenecektir.

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

Üretimde uygulama

  • Çok sayıda küçük dosyayla başa çıkma: önce arşivleyin, sonra aktarın

    Binlerce küçük dosya içeren bir dizini aktarmak, her dosya için oluşan bağlantı ve meta veri ek yükü nedeniyle bu araçların hiçbiriyle verimli değildir. En iyi uygulama, dizini kaynak makinede tek bir dosya olarak (örneğin .tar.gz) arşivleyip sıkıştırmak, arşivi aktarmak ve ardından hedef makinede çıkartmaktır.

  • SSH yapılandırma dosyasıyla komutları basitleştirme

    Yerel ~/.ssh/config dosyanızda ECS örneğiniz için bir takma ad (örneğin my-prod-server) oluşturarak bağlantı ve aktarım komutlarını basitleştirebilirsiniz.

    # Add the following to ~/.ssh/config
    Host my-prod-server
        HostName 118.178.x.x
        User ecs-user
        Port 22
        IdentityFile ~/.ssh/id_rsa_aliyun
        ServerAliveInterval 60

    Bu, scp ve rsync komutlarınızı basitleştirir:

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

SSS

  • Belirli bir bağlantı noktası kullanarak dosyaları nasıl aktarırım?

    • scp: Bağlantı noktasını belirtmek için -P seçeneğini (büyük harf) kullanın: scp -P <port_number> ...

    • sftp: Bağlantı noktasını belirtmek için -P seçeneğini (büyük harf) kullanın: sftp -P <port_number> ...

    • rsync: SSH için bağlantı noktasını belirtmek üzere -e seçeneğini değiştirin: rsync -avz -e "ssh -p <port_number>" ...

  • Anahtar çiftiyle bir örneğe bağlanırken özel anahtar dosyasını nasıl belirtirim?

    • scp: Özel anahtar dosyasını belirtmek için -i seçeneğini kullanın: scp -i <path_to_private_key> ...

    • sftp: Özel anahtar dosyasını belirtmek için -oIdentityFile seçeneğini kullanın: sftp -oIdentityFile=<path_to_private_key> ...

    • rsync: SSH için özel anahtarı belirtmek üzere -e seçeneğini değiştirin: rsync -e "ssh -i <path_to_private_key>" ...

Başvurular