SCP nedir?
Güvenli Kopyalama anlamına gelen SCP, Linux ve Unix benzeri işletim sistemlerinde yerel ve uzak bir sistem arasında veya iki uzak sistem arasında güvenli bir şekilde dosya ve dizin kopyalamak için kullanılan bir komut satırı programıdır.
scp komutunu kullanarak bir dosya veya dizini güvenli bir şekilde kopyalayabilirsiniz,
- yerel sisteminizden uzak bir sisteme,
- uzak bir sistemden yerel sisteminize,
- yerel sisteminizden uzak sistemler arasında.
scp komutu ile veri aktarımı yapılırken hem dosyalar hem de dizinler şifrelenir. Bu nedenle, ağınız ele geçirilse bile, failler herhangi bir anlamlı veri elde edemezler.
SCP, openSSH programının bir bileşenidir ve dosyaları güvenli bir şekilde aktarmak için SSH protokolünü kullanır. OpenSSH, hemen hemen tüm modern Linux ve Unix dağıtımlarıyla önceden yüklenmiş olarak gelir, bu yüzden onu kurmakla uğraşmayın.
Uyarı bilgisi:
openSSH geliştiricilerinden yapılan resmi duyuruya göre,
scp protokolü modası geçmiş, esnek değildir ve kolayca sabitlenemez. Bunun yerine dosya aktarımı için sftp ve rsync gibi daha modern protokollerin kullanılmasını öneririz.Link – https://lists.mindrot.org/pipermail/openssh-unix-dev/2019-March/037672.html
Ancak, kullanıcıların çoğu hala diğer protokollere göre SCP’yi tercih ediyor. Çünkü SCP, uzaktan-uzak dosya transferlerini SFTP ve Rsync gibi muadillerine göre daha verimli bir şekilde gerçekleştirir.
Ayrıca, SCP tam olarak cp komutu gibi çalışır, rsync ise davranışını kaynak dizinin sonunda eğik çizgi olup olmamasına göre değiştirir. Aşağıdaki komutlara bir göz atın:
rsync source destination/
– kaynağı hedef klasöre kopyalar.rsync source/ destination/
– kaynak klasörün içeriğini hedef klasöre kopyalar.
Bu nedenle, yolun sonuna eğik çizgiyi koyup koymadığınızı her zaman iki kez kontrol etmelisiniz.
Şahsen büyük boyutlu dosyaları iki ana bilgisayar arasında kopyalamak için Rsync’i ve tek dosyayı bir ağ üzerinden kopyalamak için SCP’yi kullanıyorum.
SCP Komut Sözdizimi
SCP komutu için genel sözdizimi aşağıda verilmiştir:
scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target
Dosya aktarım yoluna bağlı olarak sözdizimi farklılık gösterecektir. Burada bazı örnek sözdizimi biçimini ekledim.
Yerel sisteminizden uzak bir sisteme bir dosya kopyalayın:
scp <options> SourceFile User@RemoteHost:RemotePath
Benzer şekilde, yerel sisteminizden uzak bir sisteme bir dizini kopyalamak için -r parametresini kullanın:
scp -r SourceDirectory User@RemoteHost:RemotePath
Birden çok dosyayı uzak bir sisteme kopyalayın:
scp <options> SourceFile1 SourceFile2 User@RemoteHost:RemotePath
Uzak sistemden yerel sisteminize bir dosya kopyalayın:
scp <options> User@RemoteHost:RemoteFilePath DestinationFile
Uzak sistemden yerel sisteme bir dizini kopyalayın:
scp -r User@RemoteHost:RemoteDirectoryPath DestinationDirectory
Bir dosyayı bir uzak sistemden yerel sisteminizden başka bir uzak sisteme kopyalayın:
scp <options> User@RemoteHost1:RemoteFile1 User@RemoteHost2:RemotePath
Lütfen iki uzak sistem arasında dosya kopyaladığınızda trafiğin yerel sistemden geçmeyeceğini unutmayın. İşlem doğrudan iki uzak sistem arasında gerçekleşir. Ancak scp komutunu çalıştırdığınız sistemden gelen trafiği -3 parametresini kullanarak iletebilirsiniz.
Yerel sisteminizden bir uzak sistemden başka bir uzak sisteme bir dizini kopyalayın:
scp -r User@RemoteHost1:RemoteDirectory User@RemoteHost2:DestinationPath
SCP Komut Seçenekleri
SCP komutunun en sık kullanılan seçenekleri şunlardır:
-C
: Sıkıştırmayı etkinleştir. Burada C, Sıkıştırma anlamına gelir. Bu seçeneği kullandığınızda, veriler sıkıştırıldığı için veri aktarım hızı daha hızlı olacaktır. SCP, kaynak sistemde sıkıştırmayı ve hedef sistemde açmayı otomatik olarak etkinleştirecektir.- -c <cipher> : c şifre anlamına gelir. Varsayılan olarak SCP, verileri şifrelemek için ‘AES-128’ şifreleme yöntemini kullanır. -c parametresini kullanarak şifreleme yöntemini değiştirebilirsiniz.
-i <identity_file>
: Kimlik dosyası veya Özel anahtar anlamına gelir. Bildiğiniz gibi SSH’de kullanılan parola tabanlı ve anahtar tabanlı kimlik doğrulama vardır. Dosyaları aktarırken anahtar tabanlı kimlik doğrulamayı kullanmak istiyorsanız, Kimlik dosyasını veya Özel anahtarı belirtmek için -i parametresini kullanabilirsiniz.-l limit
: l limit bant genişliği anlamına gelir. Bu seçeneği kullanarak, veri aktarımı için kullanılan maksimum bant genişliğini ayarlayabilirsiniz. Limit Kbit/s olarak belirtilmelidir.- -F <ssh_config> : Bazı zamanlar, Linux sistemlerinize bağlanmak için farklı ağlar kullanmanız gerekebilir. Veya bir proxy sunucusunun arkasında olabilirsiniz. Bu gibi durumlarda -F parametresi ile farklı ssh_config dosyası kullanabilirsiniz.
-P port
– P, bağlantı noktası anlamına gelir. Lütfen büyük harf P olduğunu unutmayın. Varsayılan olarak, SSH 22 numaralı bağlantı noktasını kullanır. Güvenlik nedeniyle hedef ana bilgisayardaki bağlantı noktası numarasını değiştirmiş olabilirsiniz. Bu durumda, -P seçeneğini kullanarak yeni bağlantı noktası numarasını açıkça belirtmelisiniz.- -p : değişiklik zamanlarını, erişim zamanlarını ve modları orijinal dosyadan korumak istiyorsanız, dosyaları kopyalarken -p parametresini kullanmanız gerekir. Lütfen küçük harf p olduğuna dikkat edin.
-r
: Tüm dizinleri özyinelemeli olarak kopyalayın.-B
: B, toplu mod anlamına gelir. Dosyaları aktarırken toplu iş modunu seçmek için kullanılır. Parola sorulmasını engeller.-S program
: Şifreli bağlantı için kullanılacak programın adı.- -v : v ayrıntılı anlamına gelir. -v seçeneğini kullanırken, komut ilerlemeyi Terminal ekranınızda yazdıracaktır. Böylece dosyalar aktarılırken tam olarak neler olduğunu göreceksiniz. Bağlantı, kimlik doğrulama ve yapılandırma problemlerinde hata ayıklamada kullanışlıdır.
SCP’nin çok fazla seçeneği var. Diğer seçenekler hakkında bilgi almak için SCP komutunun man sayfalarına bakabilirsiniz. Bazı yararlı scp komut örnekleri görelim.
Başlamadan Önce Hatırlamanız Gereken Önemli Notlar
- scp komutu, güvenli dosya aktarımı için ssh’ye güvenir. Bu nedenle, uzak sistemlerde kimlik doğrulaması yapmak için bir ssh anahtarınız veya parolanız olmalıdır.
- Dosyaları aktarabilmek için kaynak dosyalarda okuma iznine ve hedef konumda yazma iznine sahip olmanız gerekir.
- scp komutu, yazmadan önce hedef konumu kontrol etmeyecektir. Hedefteki aynı ada sahip tüm dosyaların üzerine bildirimde bulunulmaksızın yazılacaktır.
- Yerel ve uzak konumları ayırt edebilmek için iki nokta üst üste (:) kullanın.
- Büyük dosyaları aktarırken, görevi bir Screen veya Tmux oturumu içinde başlatmanız önerilir.
Linux’ta SCP ile Dosyaları Aktarın
Daha önce bahsettiğim gibi, yerel bir sistemden uzak bir sisteme bir dosya veya dizini kopyalamak için scp komutunu kullanabilir ve bunun tersini yapabilir ve bir uzak bilgisayar arasında başka bir uzak bilgisayara dosya ve klasörleri kopyalayabiliriz.
1 Dosyaları SCP ile Yerel Sistemden Uzak Sisteme Kopyalayın
scp komutunu kullanarak yerel bir sistemden uzak bir sisteme bir dosya kopyalamak için şunu çalıştırın:
$ scp File1.txt [email protected]:/home/ostechnix/
Örnek Çıktı:
[email protected]'s password: File1.txt 100% 104 814.0KB/s 00:00
Yukarıdaki komutu parçalayalım ve her seçeneğin ne yaptığını görelim.
File1.txt
– Hedefe kopyalanacak kaynak dosya.ostechnix
– Uzak sistemin kullanıcı adı.192.168.1.40
– Uzak sistemin IP adresi./home/ostechnix/
– Uzak sistemdeki hedef dizin. Bu, kaynak dosyayı, yani File.txt’yi aktarmak istediğimiz mutlak yoldur.
Ayrıca dosyayı kopyalayabilir ve yeniden adlandırabilirsiniz. Aşağıdaki komut, File1.txt dosyasını hedefe aktarır ve dosyayı myfile.txt farklı bir adla kaydeder.
$ scp File1.txt [email protected]:/home/ostechnix/myfile.txt
2. SCP ile Birden Fazla Dosyayı Yerel Sistemden Uzak Sisteme Kopyalayın
Yerel bir sistemden uzak bir sisteme birden fazla dosyayı scp komutuyla aktarmak için şunu çalıştırın:
$ scp File1.txt File2.txt [email protected]:/home/ostechnix/
Örnek Çıktı:
[email protected]'s password: File1.txt 100% 104 689.4KB/s 00:00 File2.txt 100% 496 6.3MB/s 00:00
File1.txt
andFile2.txt
– Belirtilen hedefe kopyalanacak kaynakların adı.[email protected]
– Uzak sistemin kullanıcı adı ve IP adresi./home/ostechnix
– Kopyalanan dosyaları koymak istediğimiz hedef yol.
Dosyalar aynı uzantıya sahipse, aynı hedefe ulaşmak için aşağıdaki alternatif komutları kullanabilirsiniz.
$ scp {File1,File2}.txt [email protected]:/home/ostechnix/
Veya,
$ scp *.txt [email protected]:/home/ostechnix/
3. Dizinleri SCP ile Yerel Sistemden Uzak Sisteme Özyinelemeli Kopyalayın
Yerel sisteminizden alt dizinler ve içerikleri de dahil olmak üzere tüm dizini yinelemeli olarak uzak bir sisteme kopyalamak için aşağıdaki gibi -r parametresini kullanın.
$ scp -r Documents/ [email protected]:/home/ostechnix/
Yukarıdaki komut, içeriği de dahil olmak üzere tüm ‘Belgeler’ dizinini hedef sisteme kopyalayacaktır.
-r
: Alt dizinler ve içerikleri de dahil olmak üzere dosyaları ve dizinleri yinelemeli olarak kopyalayın.Documents
: Hedefe kopyalamak istediğimiz kaynak dizinin adı.[email protected]
: Uzak sistemin kullanıcı adı ve IP adresi./home/ostechnix
: Kopyalanan dizini koymak istediğimiz hedef yol.
4. Dosyaları SCP ile Uzak Sistemden Yerel Sisteme Aktarın
FIle1.txt dosyasını yerel sistemimizden uzak sisteme kopyaladığımızı unutmayın. Yerel sisteme geri kopyalayalım.
Bir dosyayı uzak bir sistemden yerel sisteminize scp ile kopyalamak için şunu çalıştırın:
$ scp [email protected]:/home/ostechnix/File1.txt Downloads/
[email protected]
: Uzak sistemin kullanıcı adı ve IP adresi./home/ostechnix/File.txt
: Yerel sisteme kopyalamak istediğimiz dosyanın mutlak yolu.Downloads
-Kopyalanan dosyanın kaydedileceği konum.
5. Uzak Sistemden Yerel Sisteme SCP Kullanarak Birden Çok Dosya Aktarın
Uzak bir sistemden yerel sisteminize birden çok dosya kopyalamak için, kopyalamak istediğiniz dosyaların mutlak yolunu aşağıda gösterildiği gibi küme parantezleri içinde belirtin.
$ scp [email protected]:/home/ostechnix/\{File1.txt,File2.txt\} Downloads/
Yukarıdaki komut, File1.txt ve File2.txt dosyalarını uzak sistemin /home/ostechnix/ dizininden yerel sistemin İndirilenler dizinine kopyalayacaktır.
Kıvrımlı parantezlerde virgülden sonra boşluk olmadığına lütfen dikkat edin.
6. Dizinleri Uzak Sistemden Yerel Sisteme Özyinelemeli Kopyalayın
Alt dizinler ve içeriği dahil tüm dizini scp kullanarak uzak bir bilgisayardan yerel sisteminize özyinelemeli olarak kopyalamak için -r parametresini kullanın.
$ scp -r [email protected]:/home/ostechnix/Documents Downloads/
Yukarıdaki komut, tüm Belgeleri uzak sistemden yerel sisteminizdeki İndirilenler dizinine kopyalayacaktır.
7. İki Uzak Bilgisayar Arasında SCP Kullanarak Dosyaları Kopyalayın
Dosyaları doğrudan bir uzak sistemden scp ile başka bir uzak sisteme kopyalamak için şunu çalıştırın:
$ scp [email protected]:/home/senthil/File1.txt [email protected]:/home/kumar/
Her iki uzak sistemin şifresini girmeniz istenecektir.
[email protected]
– Dosyadan uzak sistemin kullanıcı adı ve IP adresi şu anda bulunur./home/senthil/File1.txt
– Kopyalanmakta olan file1’in adı ve konumu.[email protected]
– Dosyayı kopyalamak istediğimiz uzak sistemin kullanıcı adı ve IP adresi./home/kumar
– Kopyalanan dosyanın uzak sistemde kaydedileceği konum.
Yukarıdaki komut /home/senthil/File1.txt dosyasını uzak ana bilgisayar 192.168.1.40’dan uzak ana bilgisayar 192.168.1.20 üzerindeki /home/kumar/ dizinine kopyalayacaktır.
Bu yöntemde, veriler doğrudan bir uzak sistemden başka bir uzak sisteme aktarılacaktır. Trafiği komutun çalıştırıldığı makine üzerinden yönlendirmek istiyorsanız aşağıdaki gibi -3 parametresini kullanın.
$ scp -3 [email protected]:/home/senthil/File1.txt [email protected]:/home/kumar/
8. SCP ile Dosyaları Kopyalarken Sıkıştırmayı Etkinleştirme
Şimdiye kadar dosyaları sıkıştırmadan aktardık. Şimdi -C parametresini kullanarak dosya aktarırken sıkıştırmayı etkinleştireceğiz.
$ scp -C File1.txt [email protected]:/home/ostechnix/
-C parametresi, verilerin kaynakta sıkıştırılmasını sağlar ve hedef taraftaki verileri otomatik olarak açar.
Sıkıştırmayı etkinleştirerek dosya kopyalama veya aktarım hızını önemli ölçüde artırabilirsiniz.
9. SCP Kullanarak Dosya Aktarırken Bant Genişliğini Sınırlayın
-l bayrağını kullanarak SCP ile dosya kopyalarken bant genişliğini sınırlayabiliriz. Lütfen maksimum bant genişliğinin Kbit/s olarak belirtildiğini unutmayın. 1 bayt=8 bit. Bu nedenle, bant genişliğini 200 KB/s ile sınırlamak istiyorsanız, -l değeri 1600 (200*8) olacaktır.
$ scp -l 1600 File1.txt [email protected]:/home/ostechnix/
Bu, SCP’nin bant genişliğini azaltmasını önlemek için büyük dosyaları aktarırken kullanışlıdır.
10. SCP Kullanarak Dosyaları Kopyalarken Farklı Bağlantı Noktası Kullanın
Bir sistem yöneticisi olarak, güvenlik nedenleriyle uzak sunuculardaki SSH protokolünüzün varsayılan bağlantı noktasını değiştirmiş olabilirsiniz. Bu gibi durumlarda dosya aktarırken port numarasını -P parametresi ile belirtebilirsiniz. Lütfen bunun büyük harf P olduğunu unutmayın.
$ scp -P 2022 File1.txt [email protected]:/home/ostechnix/
11. SCP ile Dosya Kopyalarken Farklı Şifre Kullanın
Varsayılan olarak SCP, dosyaları şifrelemek için ‘AES-128’ kullanır. Farklı bir şifre kullanmak istiyorsanız, -c parametresini ve ardından şifre adını kullanın.
Örneğin, ‘3des-cbc’ şifresini kullanmak istiyorsanız, komut aşağıdaki gibi olacaktır:
$ scp -c 3des-cbc File1.txt [email protected]:/home/ostechnix/
Desteklenen şifrelerin listesini görüntülemek için şunu çalıştırın:
$ ssh -Q cipher localhost | paste -d, -s -
Örnek Çıktı:
3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],[email protected]
12. Ayrıntılı Modda SCP ile Dosyaları Kopyalama
scp ile dosya kopyalarken arka planda neler olduğunu bilmek istiyorsanız, -v bayrağını kullanabilirsiniz. Dosyaları SCP ile Ayrıntı modunda aktarırken, SCP komut yürütmesinin adım adım süreci terminalde görüntülenecektir. Bu, sorun giderme zamanlarında kullanışlıdır.
$ scp -v File1.txt [email protected]:/home/ostechnix/
Aşağıdaki çıktıda gösterildiği gibi, Ayrıntılı modda dosya gönderirken bir sürü çıktı göreceksiniz.
13. Dosyaları SCP ile Sessiz Modda Aktarma
Dosyaları -q bayrağı ile sessiz modda aktarabiliriz. Dosyaları sessiz modda paylaşırken, çıktıda kopyalama ilerlemesini, uyarıyı veya tanı mesajını göstermez.
$ scp -q File1.txt [email protected]:/home/ostechnix/
14. PSCP ile Dosya Aktarırken Dosya Niteliklerini rezerve edin
SCP ile dosya kopyalarken dosya değiştirme süreleri, erişim süreleri ve modlar gibi dosya özniteliklerini korumak için -p parametresini kullanın. Lütfen bunun küçük harf p olduğunu unutmayın.
$ scp -p File1.txt [email protected]:/home/ostechnix/
15. SCP ile Dosya Kopyalarken Kimlik Dosyasını Kullanın
SSH, hem parola tabanlı hem de anahtar tabanlı kimlik doğrulamayı destekler. Anahtar tabanlı kimlik doğrulama, Linux ortamlarında en yaygın olarak kullanılan kimlik doğrulama yöntemidir.
Dosyaları aktarırken anahtar tabanlı kimlik doğrulamayı kullanmak istiyorsanız, Kimlik dosyasını veya Özel anahtarı belirtmek için -i parametresini kullanın.
$ scp -i my_private_key.pem File1.txt [email protected]:/home/ostechnix/
16. SCP ile Dosya Aktarırken Farklı ssh_config Dosyası Kullanın
Linux sistemlerinize bağlanmak için farklı ağları kullanmanız gereken durumlar vardır. Veya bir proxy sunucusunun arkasında olabilirsiniz. Bu gibi durumlarda -F parametresi ile farklı ssh_config dosyası kullanabilirsiniz.
$ scp -F /home/ostechnix/my_ssh_config File1.txt [email protected]:/home/ostechnix/
17. IPv4 veya IPv6 kullanarak SCP ile dosyaları kopyalayın
SCP’yi dosyaları kopyalarken yalnızca IPv4 veya IPv6 adreslerini kullanmaya zorlayabiliriz. Bu, IPv4 ağları için -4 ve IPv6 ağları için -6 eklenerek gerçekleştirilebilir.
$ scp -6 File1.txt [email protected]:/home/ostechnix/
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.