Linux SCP Komutu ve Kullanımı

Tekrar merhabalar. Yerel bir ağda bir sistemimiz mevcut. Bazen isteklere göre bazı dosyaları düzenleriz ve aktif ederiz. Tabii aktif çalışan bir sistem olduğundan önce test serverında yapılan değişiklikleri test eder, sonra dosyayı kullanan diğer serverlara bu değişiklikleri göndeririz.

Peki dosyaların kopyalanacağı server sayısı birazcık (birazcık derken 10 tanecikten bahsediyorum) fazlaysa ne yapacağız? İlk akla gelen FTP ‘den dosyaları indirip ve hepsine FTP bağlantısı kurup yüklemek. Bu kadar ne diye uğraşırsınız ki? Serverlar linux. O zaman SCP kullanırsak istediğimiz olur.

SCP (Secure Copy), bir ağdaki iki bilgisayar arasında dosya, klasör kopyalamamızı sağlar. Bağlantı sırasında SSH servisini kullanır. SCP’nin kullanımı gayet basit ve kısadır. Komutu verdikten sonra bağlantısını kurar, dosyasını kopyalar ve bağlantısını kapatır. Basit olarak anlatırsak kullanımı şu şekildedir:

scp kopyalacak_dosyanın_adi kopyalanacağı_yer

SCP uzak bilgisayarlarla iletişime geçebilen bir komut, öyleyse ona dosyanın mı yoksa kopyalanacağı yerin mi (yada ikisi birden) uzak bilgisayarda olduğunu söylemeli, konumlarını belirtmeliyiz. Bunu yapmak için uzak bilgisayarda olan konumun başına “kullanıcı_adı@host_ismi:” gibi bir ekleme yapmamız gerekiyor.

Eğer karşı bilgisayardan kendi bilgisayarımıza kopyalayacaksak:

scp kullanici_adi@IPADRESI:kopyalacak_dosyanın_adi kopyalanacağı_yer

Kendi bilgisayarımızdan karşı bilgisayara kopyalayacaksak:

scp kopyalacak_dosyanın_adi kullanıcı_adı@IPADRESI:kopyalanacağı_yer

Uzak bilgisayarlar arası kopyalayacaksak:

scp kullanıcı_adı@IPADRESI:kopyalacak_dosyanın_adi kullanıcı_adı@IPADRESI2:kopyalanacağı_yer

Bu kadar basit. Bu adımdan sonra size karşı tarafın şifresi sorulacak, onu da girdikten sonra dosyalarınız kopyalanacak. Eğer iç içe dosyaları ve klasörleri de kopyalamak isterseniz (-r) parametresini kullanabilirsiniz.

Örnekleyelim….

Dosyanın Olduğu IP: 172.16.0.2
Dosyamızın Konumu: /home/aliosman/netopsiyon.txt
Dosyanın Gönderileceği IP: 172.16.0.3

172.16.0.2 IP adresli servera SSH girişi yaptık. Komutumuz şu şekilde;

scp /home/aliosman/netopsiyon.txt root@172.16.0.3:/home/aliosman/

Peki dosya değilde klasör gönderelim. Bu durumda komutumuz;

scp -r /home/aliosman/deneme root@172.16.0.3:/home/

Yeni bir serverımız daha var. Onun da IP adresi 172.16.0.4. Ancak bunun SSH portu 22 değil, 1230 olsun. Bu durumda komutumuza yeni parametre (-P) geliyor.

scp -P 1230 -r /home/aliosman/deneme root@172.16.0.4:/home/

Ancak bende linux kullanıyorum. Bu yüzden herhangi bir servera girmeme gerek yok. Kendi bilgisayarımdan 2 server arasında scp yapabilir miyim? Deneyelim;

scp root@172.16.0.3:/home/aliosman/netopsiyon.txt root@172.16.0.4:/home/aliosman/

172.16.0.2 IP adresli serverdaki /home/aliosman/ altındaki herşeyi 172.16.0.3 IP adresli serverdaki farklı klasörün altına nasıl göndeririz? * ile 🙂

scp -r root@172.16.0.2:/home/aliosman/* root@172.16.0.3:/home/netopsiyon/

Şimdi de 172.16.0.3 nolu makinaya SSH girişi yapalım. 172.16.0.4 IP adresli makinadan netopsiyon.zip dosyasını çekelim.

scp root@172.16.0.4:/home/netopsiyon.zip /home/aliosman/

Herhalde bu kadar örnek yeter. Kafanıza takılan sorular varsa, saçmalamışsın, nerden aklına geliyor bunlar diyen varsa buyursun yorumlara…

NOT: Bu işlemi gerçek serverlar arasında da yapabilirsiniz. Komutlardaki dosyalar ve serverlar kurgusaldır.