Linux'ta scp Komutu Nasıl Kullanılır
Yayınlanan: 2022-06-28
scp
komutu, Linux bilgisayarlar arasında dosya kopyalamayı kolay ve güvenli hale getirir. SSH güvenliğini kullanır, ancak hepsinden önemlisi basittir. cp
kullanabiliyorsanız, scp
kullanabilirsiniz.
Güvenli Kopyalama Protokolü ve scp
Birkaç terim tanımlayalım: SCP var ve scp
var. Büyük harfli SCP, Güvenli Kopyalama Protokolü anlamına gelir. Küçük harf scp
, güvenli cp
anlamına gelir. Başka bir deyişle, SCP bir protokoldür ve scp
bir programdır.
scp
, uzak Linux bilgisayarlar arasında dosya kopyalamanın güvenli ve güvenli bir yolu olarak tasarlanmıştır. Güvenli bağlantılar kurmak için SSH kullanır. SSH veya güvenli kabuk, genellikle uzak Linux bilgisayarlarına erişmek ve oturum açmak için kullanılan bir kriptografik ağ protokolüdür. Linux dağıtımlarında, SSH işlevselliği OpenSSH tarafından sağlanır.
SCP dişte biraz uzundur ve günümüzde kullanımıyla ilgili endişeler dile getirilmiştir. OpenSSH 8.8 sürümünden bu yana, SCP'nin kullanımdan kaldırıldığı düşünülmüştür. Varsayılan olarak Güvenli Dosya Aktarım Protokolünü kullanmak için scp
modern uygulamaları. Güvenli bağlantı için SSH hala kullanılmaktadır, ancak dosya aktarımları SFTP tarafından gerçekleştirilir. Bunların hepsi görünmezdir ve sihirli bir şekilde kaputun altında gerçekleşir ve scp
sözdizimi aynı kalmıştır.
rsync
programı scp
yerine tercih edilir, ancak rsync
kurulu olmayan ve kök ayrıcalıklarına sahip olmadığınız bir bilgisayarla karşılaşabilirsiniz, yani devam edip kuramazsınız. Kendi kendine yeten bir ağda bilgisayardan bilgisayara dosya kopyalamak için scp
gayet iyi. scp
çalışması için, kopyalayacağınız tüm bilgisayarlarda SSH'nin çalışıyor olması gerekir.
Bilgisayarınızda yüklü olan OpenSSH sürümünü görmek için şunu yazın:
ssh -V
Tek Bir Dosyayı Kopyalama
Standart cp
komutu gibi, scp
de dosyaları kaynak konumdan hedef konuma kopyalar. Bir dosyayı uzak bir bilgisayara kopyalamak için uzak bilgisayarın IP adresini veya ağ adını bilmeniz gerekir. Dosyayı gönderdiğiniz konum için yazma ayrıcalıklarına sahip bir kullanıcı hesabının kimlik bilgilerine de sahip olmanız gerekir.
Yerel ağda “fedora-34” adlı bir bilgisayara “sample.txt” isimli bir dosya göndermek için sözdizimi şöyledir:
scp ./sample.txt [email protected]:/home/dave/Downloads/
Komut şunlardan oluşur:
- scp : scp komutu
- ./sample.txt : Göndereceğimiz dosya. Bu, geçerli dizinde.
- dave@ : Dosyayı göndereceğimiz uzak bilgisayardaki kullanıcı hesabı.
- fedora-34.local : Uzak bilgisayarın ağ adı.
- :/home/dave/Downloads/ : Dosyanın uzak bilgisayarda kopyalanacağı konum. Bilgisayar adını ve yolunu ayıran iki nokta üst üste “:” işaretini not edin.
Uzak bilgisayardaki hesabın parolasını girmeniz istenir ve ardından dosya kopyalanır.
Dosyanın uzak bilgisayarda farklı bir ada sahip olmasını istiyorsanız, hedef yola bir dosya adı ekleyebilirsiniz. Aynı dosyayı kopyalamak ve "farklı-dosya.txt" olarak adlandırmak için bu sözdizimini kullanın:
scp ./sample.txt [email protected]:/home/dave/Downloads/ Different-file.txt
scp
komutu sessizce mevcut dosyaların üzerine yazacaktır, bu yüzden dosyaları kopyalarken dikkatli olun. Hedef bilgisayarda kopyaladığınız dosyayla aynı ada sahip bir dosya zaten varsa, üzerine yazılır ve kaybolur.
Hedef bilgisayar varsayılan SSH bağlantı noktası olan 22'yi kullanmıyorsa, uygun bağlantı noktası numarasını sağlamak için -P
(bağlantı noktası numarası) seçeneğini kullanabilirsiniz.
Tek Bir Dosyayı Alma
Uzak bir sunucudan bir dosya kopyalamak için, uzak sunucuyu kaynak olarak koymanız ve dosyanın hedef olarak kopyalanmasını istediğiniz yere yerel yolu koymanız yeterlidir. Uzak bilgisayardan yerel bilgisayardaki geçerli dizine “development-plan.md” adlı bir dosyayı kopyalayacağız.
scp [email protected]:/home/dave/Downloads/development-plan.md .
Yerel yola bir dosya adı eklerseniz, dosya kopyalanır ve bu ad verilir.
scp [email protected]:/home/dave/Downloads/development-plan.md ./dp-1.md
Dosya kopyalandı, ancak belirtilen dosya adımıza yeniden adlandırıldı.
ls -hl *.md
Birden Fazla Dosyayı Kopyalama
Birden çok dosyayı her iki yönde kopyalamak kolaydır. İstediğiniz kadar kaynak dosya listeleyebilirsiniz. Burada iki markdown dosyası ve bir CSV dosyası kopyalıyoruz.

scp ./dp-1.md ./dp-2.md ./dp-3.csv [email protected]:/home/dave/Downloads/
Üç dosya uzak bilgisayara kopyalanır. Ayrıca joker karakterler de kullanabilirsiniz. Bu komut, son komutla tamamen aynı şeyi yapar.
scp ./dp . [email protected]:/home/dave/Downloads/
Dizinleri Özyinelemeli Kopyalama
-r
(özyinelemeli) seçeneği, tüm dizin ağaçlarını tek bir komutla kopyalamanıza izin verir. “data” adlı bir dizine iki dosya yerleştirdik ve “data” dizini içinde “CSV” adında bir dizin oluşturduk. “data/CSV” dizinine bir CSV dosyası yerleştirdik.
Bu komut, dosyaları kopyalar ve uzak bilgisayardaki dizin yapısını yeniden oluşturur.
scp -r ./data [email protected]:/home/dave/Downloads/
Uzak Sunucular Arasında Dosya Kopyalama
Hatta scp
dosyaları bir uzak sunucudan diğerine kopyalaması için talimat verebilirsiniz. Sözdizimi oldukça basittir. Kaynak sunucunun hesap adını ve ağ adresini ve hedef sunucunun hesap adını ve ağ adresini sağlarsınız. Dosyalar kaynak sunucudan kopyalanır ve hedef sunucudaki konuma kopyalanır.
Sözdizimi basit olmasına rağmen, diğer her şeyin yerinde olduğundan emin olmak biraz daha fazla düşünmeyi gerektirir. Açıkçası, uzak sunucudaki dosyaları kopyalamaya çalıştığınız konuma, komut satırında belirttiğiniz kullanıcı hesabı tarafından erişilebilir olmalıdır. Ve bu kullanıcı hesabının o konumda yazma izinleri olmalıdır.
Daha ince bir ön koşul, yerel bilgisayarınız ile kaynak bilgisayar arasında ve ayrıca kaynak ve hedef sunucular arasında SSH erişiminin kurulması gerektiğidir. Kaynak sunucudan hedef sunucuda oturum açmak için SSH kullanabildiğinizden emin olun. Bunu yapamazsanız, scp
bağlanamaz.
Kimliği doğrulanmış ancak parolasız erişimi kullanabilmeniz için SSH anahtarlarını ayarlamak, açık ara tercih edilen yöntemdir. Parolaları kullanmak çok hızlı bir şekilde dağınık hale gelir ve her kullanıcı hesabı için parola istendiğinden, işlemi bir komut dosyasıyla tamamen otomatikleştirmenizi engeller.
Her uzak sunucuda kullandığımız kullanıcı hesapları için SSH anahtarları kurduk. Bu, bu iki kullanıcı için diğer sunucuya kesintisiz SSH erişimi sağladı. Bu, bu iki kullanıcı hesabını kullanarak dosyaları her iki yönde de aktarmamızı sağlar.
Dosyaları bir Manjaro bilgisayarındaki "davem" kullanıcı hesabından bir Fedora bilgisayarındaki "dave" hesabına yerel Ubuntu bilgisayarımızdan verilen bir scp
komutuyla kopyalamak için sözdizimi şöyledir:
scp [email protected]:/home/davem/man . [email protected]:/home/dave/
Sessizce komut satırına döndük. Bir şey olduğuna dair hiçbir belirti yok. Hiçbir haberin iyi haber olmadığı varsayımıyla çalışan scp
, yalnızca bu uzaktan uzaktan kopyalamaya ilişkin hataları bildirir. Fedora bilgisayarını kontrol ederken, Manjaro bilgisayarındaki dosyaların kopyalandığını ve alındığını görebiliriz.
Varsayılan olarak, dosyalar doğrudan kaynak bilgisayardan hedef bilgisayara kopyalanır. -3
(üç yollu) seçeneğini kullanarak bunu geçersiz kılabilirsiniz.
Bu seçenek ile dosyalar, yerel bilgisayarınız aracılığıyla hedeften kaynağa aktarılır. Bunun olması için yerel bilgisayarınızdan hedef bilgisayara kesintisiz SSH erişimi olması gerekir.
scp -3 [email protected]:/home/davem/man . [email protected]:/home/dave/
Dosyaları yerel bilgisayarınız üzerinden kanalize ederken bile hala bir şey olduğuna dair bir belirti yok. Pudingin kanıtı elbette hedef bilgisayarı kontrol etmektir.
Diğer seçenekler
-p
(dosya özniteliklerini koru) aktarılan dosyalarda orijinal dosya oluşturma, sahiplik ve erişim bayraklarını koruyacaktır. Kaynak bilgisayardaki orijinal dosyalarla aynı meta verilere sahip olacaklardır.
Hata mesajları görürseniz, komutu tekrarlamayı deneyin ve aktarım girişimiyle ilgili ayrıntılı bilgileri görmek için -v
(ayrıntılı) bayrağını kullanın. Çıktıdaki başarısızlık noktasını tespit edebilmelisiniz.
-C
(sıkıştır) seçeneği, dosyaları kopyalandıkça sıkıştırır ve alındığında dosyaları açar. Bu, bilgisayarlar arasındaki yavaş modem iletişim çağına kadar uzanan bir şeydir. Yükün boyutunu azaltmak, iletim sürelerini azaltabilir.
Günümüzde dosyaları sıkıştırmak ve açmak için geçen süre, sıkıştırılmış ve sıkıştırılmamış aktarımlar arasındaki farktan daha uzun sürüyor. Ancak scp
, aynı LAN üzerindeki bilgisayarlar arasında dosya kopyalamak için en iyi şekilde kullanıldığından, aktarım hızı çok fazla endişe kaynağı olmamalıdır.
İLGİLİ: Linux Sisteminizi rsync ile Nasıl Yedeklersiniz?