scp komutu: Kullanımı ve seçenekleri, klasör kopyalama ve port belirtme

Test ortamıRHEL ailesiAlmaLinux 9.8OpenSSH 9.9p1Alıcı taraf Debian 12 · OpenSSH 9.2p1root hesabı2026-10-28 tarihinde kontrol edildi

scp, SSH ile bağlandığınız bir sunucuyla dosya alışverişi yaparken kullanılan kopyalama aracıdır. scp komutuyla dosya gönderirken cp komutunda olduğu gibi önce kaynağı, sonra hedefi yazarsınız. AlmaLinux 9 sunucusundan Debian 12 sunucusuna dosya ve klasörleri gönderip geri aldığımızda aktarım SFTP protokolüyle gerçekleşti ve 20MB'lık bir dosya 1 saniyeden kısa sürede ulaştı.

Aşağıdaki tüm çıktılar, gönderen taraftaki root hesabında OpenSSH 9.9'un scp komutuyla alınan sonucun aynısıdır. Yalnızca sunucu adresleri ve hesap adları örnek değerlerle değiştirildi.

1️⃣ scp kullanımı ve uzak yollar

Uzak sunucudaki yolun önüne [hesap@sunucu adresi:] eklenir. İki nokta üst üste olmayan yol, komutu çalıştırdığınız sunucudaki yol olarak algılanır; bu nedenle iki noktanın bulunduğu taraf, gönderme mi alma mı olduğunu belirler.

🧭 scp kopyalama yönü ve uzak yollar
Açıklama diyagramı
↔️ Kopyalama yönü
$ scp report.txt user@203.0.113.10:~/scp-test/user@203.0.113.10:~/scp-test/report.txt ./downloads/-3 user@203.0.113.10:~/scp-test/report.txt user@198.51.100.20:~/scp-test/
kaynak💻 Komutu çalıştıran sunucureport.txt
➜
hedef🖥️ Uzak sunucu203.0.113.10:~/scp-test/
kaynak🖥️ Uzak sunucu203.0.113.10:~/scp-test/report.txt
➜
hedef💻 Komutu çalıştıran sunucu./downloads/
kaynak🖥️ Uzak sunucu A203.0.113.10:~/scp-test/report.txt
➜
Aktarma💻 Komutu çalıştıran sunucu-3
➜
hedef🖥️ Uzak sunucu B198.51.100.20:~/scp-test/
🧩 Uzak yol biçimi
user bağlanılacak hesap, 203.0.113.10 sunucu adresi veya alan adı, :~/scp-test/ iki noktadan sonrası o sunucudaki yol (tilde ana klasördür)
Yerel dosyayı öne, uzak yolu arkaya yazarsanız gönderme olur. İki noktadan sonraki yol eğik çizgiyle biterse dosya o klasörün içine aynı adla kaydedilir.
Uzak yolu öne yazarsanız alma olur. Alınan dosya, arkaya yazdığınız yerel yolda kalır.
Kaynak ve hedefin ikisi de uzak sunucuysa, OpenSSH 8.7'den itibaren veriler komutu çalıştıran sunucudan geçer. Bu, -3 eklendiğindeki yöntemin aynısıdır.

Geçerli klasördeki report.txt dosyasını uzak sunucunun ana dizini altındaki scp-test klasörüne gönderir.

scp report.txt user@203.0.113.10:~/scp-test/
report.txt                                    100%   14     5.1KB/s   00:00

Aktarım bitince dosya adı, ilerleme, boyut, hız ve geçen süre tek satırda görünür. Bu ilerleme göstergesi yalnızca terminalde çalıştırıldığında çıkar. Bu yüzden çıktıyı bir dosyaya yönlendirirseniz dosyada hiçbir şey kalmaz.

Dosya alırken uzak yolu öne, kaydedilecek yerel yolu arkaya yazarsınız.

scp user@203.0.113.10:~/scp-test/report.txt ./downloads/
report.txt                                    100%   14     2.7KB/s   00:00

Hedef yol klasör yerine dosya adıyla biterse dosya o adla kaydedilir. Aşağıdaki komutla gönderdikten sonra alıcı taraftaki klasörde report.txt, report-1028.txt adıyla duruyordu.

scp report.txt user@203.0.113.10:~/scp-test/report-1028.txt
report.txt                                    100%   14     4.6KB/s   00:00

🔲 scp komutu simülatörü

Aşağıdaki simülatörde gönderme, alma ve klasör kopyalama komutlarını kendiniz yazıp seçeneklere göre çıktıyı görebilirsiniz.

scp komutu simülatörüOpenSSH 9.9
[root@server work]#
Yalnızca tarayıcıda çalışır. Soldaki listeden uzak taraftaki dosyaları görebilir, ↑↓ ile önceki komutları geri çağırabilirsiniz.

2️⃣ scp komutu seçenekleri

Seçenekler scp'nin hemen ardına, kaynağın önüne yazılır. Portu belirten -P büyük harftir, küçük -p ise zamanları ve izinleri korur; bu yüzden büyük küçük harfi karıştırırsanız başka bir işlem çalışır.

-l, aktarım hızının üst sınırını Kbit/s biriminde belirler. Seçeneksiz gönderilen 20MB'lık dosyanın aktarımı 1 saniyeden kısa sürede bitti.

scp backup.tar.gz user@203.0.113.10:~/scp-test/
backup.tar.gz                                 100%   20MB  53.6MB/s   00:00

-l 8000, saniyede yaklaşık 1,000KB'a karşılık gelir. Aynı dosyayı -l 8000 ile gönderdiğimizde ilerleme göstergesindeki hız 996.5KB/s oldu ve aktarım 20 saniye sürdü.

scp -l 8000 backup.tar.gz user@203.0.113.10:~/scp-test/backup-l.tar.gz
backup.tar.gz                                 100%   20MB 996.5KB/s   00:20

-C, SSH bağlantısındaki verileri gzip ile aynı yöntemle sıkıştırır. Aynı cümlelerin tekrarlandığı 19MB'lık günlük dosyasını üçer kez gönderdiğimizde, bu iki sunucu arasında -C ekli gönderim biraz daha yavaş kaldı.

KomutDosyaÇalışma süresiİlerleme göstergesi hızı
scp backup.tar.gz20MB0,68 sn53.6MB/s
scp -l 8000 backup.tar.gz20MB20.82 sn996.5KB/s
scp access.log (3 kez)19MB0.79~0.89 sn—
scp -C access.log (3 kez)19MB0.84~0.97 sn—

Çalışma süresi, komutun başlatılıp bağlanması ve aktarımın bitmesine kadar geçen süredir. ssh kılavuzu da sıkıştırmanın yavaş hatlarda işe yaradığını, hızlı ağlarda ise aktarımı yavaşlattığını açıklar.

-v, bağlantıdan aktarıma kadarki süreci debug1 satırları olarak yazdırır; bu yüzden bağlantı kurulamadığında veya kimlik doğrulamada takıldığında nedeni bulmak için kullanılır. Çıktı uzun olduğundan grep ile yalnızca kimlik doğrulama ve aktarım satırlarını seçtik.

scp -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'
Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending subsystem: sftp
Transferred: sent 2536, received 3248 bytes, in 0.1 seconds

[Sending subsystem: sftp] satırı, scp'nin dosyayı SFTP protokolüyle gönderdiği anlamına gelir. OpenSSH 9.0'dan itibaren scp varsayılan olarak SFTP kullanır. -O eklenirse eski SCP protokolüyle aktarılır ve aynı yerde [Sending command: scp -v -t] görünür.

scp -O -v report.txt user@203.0.113.10:~/scp-test/ 2>&1 | grep -E 'Authenticated|Sending|Transferred'
Authenticated to 203.0.113.10 ([203.0.113.10]:22) using "publickey".
debug1: Sending command: scp -v -t ~/scp-test/
Sending file modes: C0600 14 report.txt
Transferred: sent 2328, received 3036 bytes, in 0.1 seconds

📌 Başlıca seçenekler: bu yazıda çalıştırılan sonuçlar

SeçenekGörevBu yazıdaki sonuç
-PSSH bağlantı portunu belirtirPort 22'de report.txt aktarımı tamamlandı, açık olmayan port 2222 [Connection timed out] ile bitti
-iAçık anahtar kimlik doğrulamasında kullanılacak özel anahtar dosyasını belirtir~/.ssh/id_ed25519 belirtilerek report.txt aktarımı tamamlandı
-rKlasördeki dosyaları ve alt klasörleri kopyalarAlıcı tarafta css ve images klasörleri özgün yapıyla kalır; seçenek çıkarılırsa [not a regular file] hatasıyla aktarılmaz
-pKaynağın değiştirilme ve erişim zamanlarını, izinlerini korurDeğiştirilme zamanı korunur; bu yazıdaki alıcı tarafta 600 izni yalnızca -O -p ile gönderilen dosyada korundu
-CSSH bağlantısındaki verileri sıkıştırırBu yazıdaki iki sunucu arasında 19MB'lık günlükte seçenekli gönderim biraz daha yavaştı
-lAktarım hızının üst sınırını Kbit/s biriminde belirler-l 8000 ile 20MB, 996.5KB/s, 20.82 saniye
-vBağlantıdan aktarıma kadarki süreci debug1 satırları olarak yazdırır[Sending subsystem: sftp] satırıyla SFTP aktarımı doğrulandı
-3İki uzak sunucu arasındaki veriyi komutu çalıştıran sunucu üzerinden aktarır (OpenSSH 8.7'den itibaren varsayılan yöntem)Aynı sunucudaki iki klasör kaynak ve hedef yapılarak report.txt aktarımı tamamlandı
-OEski SCP protokolüyle aktarır-v çıktısında [Sending command: scp -v -t] görünür; boşluklu yollar için ek ters eğik çizgi gerekir
-ossh_config biçimindeki seçeneği ssh'a iletirConnectTimeout=10 ile bekleme süresi 10 saniyeye ayarlanıp [Connection timed out] doğrulandı

📎 Diğer seçenekler: resmî kılavuza göre

SeçenekGörev
-qİlerleme göstergesini ve ssh uyarıları ile tanı iletilerini kapatır
-JÖnce bir atlama sunucusuna bağlanır, oradan son hedefe TCP yönlendirmesi kurar (ProxyJump ayarının kısa yazımı, birden çok atlama virgülle ayrılır)
-Fssh'ın kullanıcıya özel yapılandırma dosyası olarak başka bir dosya belirtir (ssh'a doğrudan iletilir)
-4Yalnızca IPv4 adreslerini kullanmaya zorlar
-6Yalnızca IPv6 adreslerini kullanmaya zorlar

3️⃣ scp ile klasör kopyalama ve zamanları koruma

Klasörü seçeneksiz belirtirseniz scp normal dosya olmadığını bildiren bir hata yazdırır ve aktarımı yapmaz.

scp site-files user@203.0.113.10:~/scp-test/
scp: local "site-files" is not a regular file
scp: failed to upload file site-files to ~/scp-test/

-r eklenirse klasördeki dosyalar ve alt klasörler kopyalanır.

scp -r site-files user@203.0.113.10:~/scp-test/
logo.png                                      100%   48KB   4.7MB/s   00:00
style.css                                     100%   15     5.0KB/s   00:00
index.html                                    100%   15     5.2KB/s   00:00

Çıktıda yalnızca dosya adları görünür. Alıcı taraftaki find çıktısında site-files altında css ve images klasörleri özgün yapıyla duruyordu.

ssh user@203.0.113.10 'cd ~/scp-test && find site-files'
site-files
site-files/images
site-files/images/logo.png
site-files/index.html
site-files/css
site-files/css/style.css

-r, klasördeki sembolik bağlantıları izleyip özgün dosyaları kopyalar; bu yüzden bağlantıların bağlantı olarak taşınması gereken klasörler için rsync -a daha uygundur.

-p, kaynağın değiştirilme ve erişim zamanlarını, izinlerini korur. Özgün report.txt dosyasının değiştirilme zamanını 1 Ekim 2026 00:00 (UTC), iznini 600 yaptıktan sonra gönderdik. Alıcı sunucunun saat dilimi UTC olduğundan gönderen taraftaki ls de TZ=UTC ile yazdırıldı.

TZ=UTC ls -l report.txt
-rw------- 1 root root 14 Oct  1 00:00 report.txt
scp -p report.txt user@203.0.113.10:~/scp-test/report-p.txt
report.txt                                    100%   14     4.7KB/s   00:00
scp -O -p report.txt user@203.0.113.10:~/scp-test/report-Op.txt
report.txt                                    100%   14     4.2KB/s   00:00
ssh user@203.0.113.10 'ls -l ~/scp-test/report.txt ~/scp-test/report-p.txt ~/scp-test/report-Op.txt'
-rw------- 1 user user 14 Oct  1 00:00 /home/user/scp-test/report-Op.txt
-rw-rw-r-- 1 user user 14 Oct  1 00:00 /home/user/scp-test/report-p.txt
-rw-rw-r-- 1 user user 14 Oct 28 06:17 /home/user/scp-test/report.txt

-p ile gönderilen report-p.txt ve -O -p ile gönderilen report-Op.txt özgün zamanı korudu, seçeneksiz gönderilen report.txt ise gönderim zamanıyla kaydedildi. Alıcı sunucuda SFTP ile gönderilen dosyaların izni -p eklense de 664 olarak kaydedildi, yalnızca eski SCP protokolüyle (-O) gönderilen dosyada 600 korundu.

Bu nedenle izinlerinin de kaynakla aynı olması gereken dosyalarda, gönderdikten sonra alıcı tarafta ls -l ile izinleri kontrol edersiniz.

4️⃣ scp ile port ve anahtar dosyası belirtme

Varsayılan port 22 ve varsayılan anahtarla bağlanılamayan sunucularda, göndermeden önce portu ve anahtarı kendiniz belirtirsiniz. -P SSH bağlantı portunu, -i açık anahtar kimlik doğrulamasında kullanılacak özel anahtar dosyasını belirtir.

Aşağıda port 22 ve anahtar dosyasının doğrudan belirtildiği bir örnek var. Portu değiştirilmiş bir sunucuda 22 yerine o numarayı yazarsınız.

scp -P 22 -i ~/.ssh/id_ed25519 report.txt user@203.0.113.10:~/scp-test/
report.txt                                    100%   14     5.3KB/s   00:00

-i olmadan çalıştırıldığında ssh gibi ~/.ssh altındaki varsayılan adlı anahtarları (id_rsa, id_ecdsa, id_ed25519 vb.) sırayla kullanır.

Aynı sunucuya sık gönderiyorsanız ~/.ssh/config dosyasına bir takma ad yazın, scp'de yalnızca takma adı girin.

Host myserver
    HostName 203.0.113.10
    User user
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Host satırındaki ad takma ad olur, altındaki dört satır sunucu adresi, hesap, port ve anahtar dosyasının yerini alır. Yalnızca takma ad yazılan komut da adres ve anahtarın tamamı yazıldığındaki aynı tek satırlık sonuçla bitti.

scp report.txt myserver:~/scp-test/
report.txt                                    100%   14     4.2KB/s   00:00

-P, -i ve takma adlar ssh bağlantı ayarlarını olduğu gibi kullandığından, anahtar oluşturup sunucuya kaydetme süreci de SSH komutu ile bağlanırken izlenen süreçle aynıdır.

5️⃣ scp ile sunucular arası kopyalama

Kaynak ve hedefin ikisi de uzak sunucu olsa bile tek satır scp ile kopyalayabilirsiniz. OpenSSH 8.7'den itibaren veriler komutu çalıştıran sunucu üzerinden aktarılır ve bu yöntem -3'tür. Resmî sürüm notları, varsayılan yöntemi değiştirme nedeni olarak kaynak sunucuda hedef sunucunun kimlik bilgilerini tutmanın gerekmemesini gösterir.

Aşağıdaki ölçüm, aynı sunucudaki iki klasör kaynak ve hedef yapılarak alındı. Hedef sunucu farklıysa yalnızca sondaki hesabı ve adresi değiştirin.

scp -3 user@203.0.113.10:~/scp-test/report.txt user@203.0.113.10:~/scp-test/copy3/
report.txt                                    100%   14     2.5KB/s   00:00

İki şube arasındaki evrakı merkezin alıp yeniden göndermesi gibidir.

Kaynak sunucunun hedef sunucuya doğrudan gönderdiği eski yöntem -R ile belirtilir. Bu yöntemde kaynak sunucu hedef sunucuya parolasız bağlanabilmelidir. OpenSSH 10.6'dan itibaren -R kullanılınca kullanımdan kaldırılacağına dair uyarı çıkar, sonraki sürümlerde ise bu seçenek yok sayılıp -3 yöntemiyle kopyalanacaktır.

6️⃣ scp ve rsync karşılaştırması

Birkaç dosyayı bir kez göndermek için scp yeterlidir; aynı klasörü tekrar tekrar eşitlemek veya kesilen aktarımı sürdürmek için ise rsync komutu daha uygundur. scp her çalıştırmada belirtilen dosyaların tamamını yeniden gönderir, rsync ise kaynak ve hedefi karşılaştırıp yalnızca değişen dosyaları aktarır.

Öğescprsync
Aktarım kapsamıHer çalıştırmada belirtilen dosyaların tamamıKaynağa göre yalnızca değişen dosyalar
Yarım kalan dosyaları koruma (--partial)❌✅
Kaynakta olmayan dosyaları silme (--delete)❌✅
Sembolik bağlantılarİzleyip özgün dosyayı kopyalar-a ile bağlantı olarak kalır
Alıcı tarafta gerekenlerSSH erişimi ve SFTP sunucusuHer iki tarafta da rsync kurulu

7️⃣ scp komutu hata mesajları ve çözümleri

scp başarısız olunca neden çıktının ilk satırında görünür. Var olmayan dosya, yazma izni ve yanlış portla bilerek oluşturduğumuz üç hatanın hepsinde neden ilk satırda çıktı, çıkış kodları da hiçbirinde 0 değildi.

🔲 No such file or directory

Uzak tarafta olmayan bir dosyayı almaya çalışırsanız yolla birlikte [No such file or directory] yazdırılır.

scp user@203.0.113.10:~/scp-test/nofile.txt ./downloads/
scp: ~/scp-test/nofile.txt: No such file or directory

Gönderirken hedef klasör yoksa da aynı hata çıkar. scp olmayan klasörü oluşturmaz; bu yüzden önce ssh ile mkdir -p çalıştırıp klasörü oluşturursunuz.

scp report.txt user@203.0.113.10:~/scp-test/nodir/sub/
scp: dest open "scp-test/nodir/sub/": No such file or directory
scp: failed to upload file report.txt to ~/scp-test/nodir/sub/

🔲 Permission denied

Alıcı taraftaki klasörde yazma izni yoksa [dest open] ardından [Permission denied] gelir. Aşağıda izni 555 olan readonly klasörüne gönderme sonucu var.

scp report.txt user@203.0.113.10:~/scp-test/readonly/
scp: dest open "scp-test/readonly/report.txt": Permission denied
scp: failed to upload file report.txt to ~/scp-test/readonly/

[Permission denied] önünde [hesap@sunucu adresi:] varsa ve parantez içinde publickey gibi bir kimlik doğrulama yöntemi yazıyorsa, bağlantı kimlik doğrulama aşamasında reddedilmiştir. Bu ifade, ssh programının kimlik doğrulama başarısız olduğunda verdiği biçimdir; bu yüzden önce -i ile belirtilen anahtar dosyasını ve sunucuya kayıtlı açık anahtarı kontrol edersiniz.

🔲 Connection timed out

Port numarası yanlışsa veya güvenlik duvarı o portu engellediği için yanıt gelmiyorsa, bağlantı beklenir ve [Connection timed out] ile biter. Aşağıda bekleme süresi 10 saniye yapılarak açık olmayan port 2222'ye gönderme sonucu var.

scp -P 2222 -o ConnectTimeout=10 report.txt user@203.0.113.10:~/scp-test/
ssh: connect to host 203.0.113.10 port 2222: Connection timed out
scp: Connection closed

Bu hata çıkarsa önce -P ile yazdığınız numaranın sunucunun SSH portuyla aynı olup olmadığını kontrol edersiniz.

🔲 Yollardaki boşluklar ve tilde (~)

SFTP ile aktaran günümüz scp'sinde boşluk içeren uzak yolu tek tırnakla bir kez sarmak yeterlidir.

scp report.txt 'user@203.0.113.10:~/scp-test/my files/'
report.txt                                    100%   14     4.7KB/s   00:00

Aynı komuta -O ekleyip eski SCP protokolüyle gönderdiğimizde [ambiguous target] ile başarısız oldu. Çünkü eski SCP protokolünde uzak kabuk yolu bir kez daha yorumlar.

scp -O report.txt 'user@203.0.113.10:~/scp-test/my files/'
scp: ambiguous target

Bu durumda uzak kabukta da tek sözcük olarak okunması için boşluğun önüne ters eğik çizgi koyarsınız.

scp -O report.txt 'user@203.0.113.10:~/scp-test/my\ files/'
report.txt                                    100%   14     4.5KB/s   00:00

İki noktadan sonraki yol eğik çizgi veya tilde olmadan başlarsa uzak hesabın ana klasörüne göre işlenir.

scp report.txt user@203.0.113.10:scp-test/report-rel.txt
report.txt                                    100%   14     5.6KB/s   00:00

Resmî kılavuz, eski bir SFTP sunucusu tilde ile başlayan yolu ana klasöre çeviremediğinde -O kullanılmasını söyler. Bu durumda yukarıdaki gibi tilde olmadan ana klasöre göre yol yazmak da aynı yere kaydeder.

🔢 SSS & önerilen içerikler

Aynı adlı dosya varsa onay sormadan yeni dosyanın üzerine yazılır. Aynı report.txt dosyasını aynı klasöre birkaç kez gönderdiğimizde de onay sorulmadan her seferinde aktarıldı. Bu yüzden saklamanız gereken dosyalar için hedef yolun sonuna başka bir ad yazarak gönderirsiniz.

Uzak yola * koyup tek tırnakla sararsanız uzak sunucuda adı eşleşen tüm dosyalar alınır. Uzak sunucudaki report-*.txt dosyalarını aldığımızda adı eşleşen altı dosya sırayla aktarıldı. Tırnaklar, komutu çalıştıran sunucunun kabuğunun *'ı önce yorumlamasını önler.

-B eklenirse parola veya parola öbeği sormayan toplu iş kipinde çalışır. Resmî kılavuza göre bu kipte parola girilemez; bu yüzden cron gibi otomatik işler için önce anahtarla kimlik doğrulamayı ayarlarsınız.

🧭 Ağ komutları için önerilen içerikler 13 yazı · 2 kaynak
🗂️ Ağ komutları
📄 ip komutu 📄 netstat · ifconfig komutları 📄 nmtui komutu
📄 SSH komutu 📄 rsync komutu 📄 wget komutu 📄 rz · sz komutları 📄 scp komutu
📄 host komutu 📄 nslookup komutu
📄 iptables komutu 📄 firewall-cmd komutu 📄 certbot komutu

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 0   +   4   =