Linux'ta scp Komutu Nasıl Kullanılır

Yayınlanan: 2022-06-28
Bir dizüstü bilgisayar ekranında Linux terminali.
fatmawati achmad zaenuri/Shutterstock.com

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.

Ubuntu'da Uzak Masaüstü Nasıl Kurulur
İLGİLİ Ubuntu'da Uzak Masaüstü Nasıl Kurulur

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 

OpenSSH sürümünü edinme

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/ 

Tek bir dosyayı uzak bir bilgisayara kopyalama

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 

Tek bir dosyayı yeni bir adla uzak bir bilgisayara kopyalama

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 . 

Uzak sunucudan yerel bilgisayarın geçerli dizinine tek bir dosya kopyalama

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 

Uzak bir sunucudan yerel bilgisayarın geçerli dizinine yeni bir adla tek bir dosya kopyalama

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/ 

Birden çok adlandırılmış dosyayı uzak bir bilgisayara kopyalama

Üç 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/ 

Dosya adındaki joker karakterleri kullanarak birden çok dosyayı uzak bir bilgisayara kopyalama

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/ 

Bir dizin ağacını uzak bir bilgisayara kopyalama

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.

Linux Kabuğundan SSH Anahtarları Nasıl Oluşturulur ve Kurulur
İLGİLİ Linux Kabuğundan SSH Anahtarları Nasıl Oluşturulur ve Yüklenir

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/ 

Dosyaları bir uzak sunucudan diğerine kopyalama.

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.

Fedora bilgisayarında alınan Manjaro bilgisayarından dosyalar

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/ 

Yerel bilgisayar aracılığıyla dosyaları bir uzak sunucudan diğerine kopyalama

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?