scp komutunu kullanarak dosyaları Linux sisteminizden uzak bir sisteme aktarmanıza yardımcı olacak kolay bir eğitim.
SCP, 'Güvenli Kopyalama' anlamına gelir. scp
Linux tarafından sunulan ve güvenli olmayan bir ağ üzerinden bir makineden diğerine dosya ve dizin aktarımına izin veren bir komut satırı yardımcı programıdır.
Dosyaları bir sistemden diğerine kopyalamak istiyorsanız, scp
dosya ve dizinlerin güvenli bir şekilde aktarılmasını sağlamak için çok iyi bir seçenek olabilir. İletişim kuran iki makine aynı ağ üzerinden bağlandığında, scp
mümkün hale gelir.
büyük ölçüde güvenebilirsiniz scp
Hem aktarılmakta olan dosya hem de aktarım için kullanılan parola şifrelendiğinden gizlilik ve bütünlük için komut verilir. Bu aktarım devam ederken herhangi biri trafiği gözetlemeye çalışsa bile hiçbir hassas bilgi ifşa edilmeyecektir.
Bu derste, farklı örneklerini göreceğiz. scp
emretmek. Ayrıca, sık kullanılan seçeneklerden bazılarına da göz atacağız. scp
emretmek.
scp komutunu kullanmaya başlama
Kullanmak scp
komut dosyaları/dizinleri aktarabilirsiniz:
- Yerel makinenizden uzak bir makineye.
- İki uzak makine arasında.
- Uzak bir makineden yerel makinenize.
Genel sözdizimi:
scp [Option] [source_file_name] [user@destination_Host]:destination_folder
Bu komutun temel özelliklerini tek tek anlayalım.
- [kaynak_dosya_adı] Bu, kopyalamak istediğiniz kaynak dosyadır.
- [user@destination_Host] Bu, dosyayı kopyalamak istediğiniz uzak sistemin kullanıcı adıdır. Uzak makinenin IP adresi de bu öznitelikte kullanılır.
@
' sembolü. - [Hedef klasör] Bu, kopyalanan dosyayı kaydetmek istediğiniz dizindir.
Not: kolon (:
) sembolü, yerel ve uzak konumlar arasında ayrım yaptığı için sözdiziminde kullanılır. iki nokta üst üste kullanıyoruz (:
) dosyaların kopyalanacağı dizini belirtmek için uzak sistemle. Hedef dizini belirlemememiz durumunda, dosyalar uzak sistem kullanıcısının ana dizinine kopyalanacaktır.
İle kullanılan seçenekler scp
ile kullanılan en popüler seçeneklerden bazıları scp
komutu aşağıda listelenmiştir.
Seçenek | Açıklama |
-C | aktarılacak dosyanın sıkıştırılmasına izin ver |
-v | ayrıntılı çıktıyı ver |
-r | dosyaları ve dizinleri yinelemeli olarak kopyalayın |
-P | dosyaların izinlerini, modlarını ve erişim sürelerini koruyun |
-P | tarafından kullanılan varsayılan bağlantı noktasını değiştirin scp emretmek |
Bu seçeneklerin örneklerini öğreticinin ilerleyen bölümlerinde göreceğiz.
Dosyayı yerelden uzak bir sisteme kopyalama
scp
aşağıdaki sözdizimini kullanarak dosyaları yerel sisteminizden uzak bir sisteme aktarmanıza olanak tanır. Bu, dosyalarınızı uzaktan yerleştirilmiş bir sunucuya aktarmanıza veya yüklemenize olanak tanır.
Genel Sözdizimi:
scp [dosya_adı] remote_user@host:[destination_folder]
Örnek:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
Bu örnekte, yerel sistemden 'apache-tomcat-9.0.8.tar.gz' dosyasını IP adresi '143.110.178.221' olan uzak sisteme kopyalıyoruz.
Uzak sistemde, dosya şimdi 'gaurav' adlı dizine kopyalanacaktır.
Çıktı:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected]'in parolası: apache-tomcat-9.0.8.tar.gz %100 9589KB 79.8KB /s 02:00 gaurav@ubuntu:~$
Dosya için uzak sistemdeki çıktıyı kontrol edelim.
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Böylece dosya, uzak sisteme başarıyla kopyalanır. scp
emretmek.
Birden çok dosyayı uzak bir sisteme kopyalama
Önceki örnekte, uzak sisteme bir dosya aktarmayı öğrendik. scp
emretmek. Şimdi bu komutu kullanarak yerel sisteminizden uzak bir sisteme birden fazla dosya aktarma yöntemini göreceğiz.
Genel Sözdizimi:
scp [dosya 1] [dosya 2] [dosya n] remote_username@remote_host:[belirli dizin]
Bu basit işlemi bir örnekle anlayalım.
Örnek:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Burada, uzaktaki sisteme kopyalanacak komutta birden fazla dosyadan bahsedilir.
Çıktı:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected]'in şifresi: ath.html %100 199KB 94.7KB/s 00: 02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$
Uzak sistemde:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l toplam 9800 -rw-r--r-- 1 kök kök 0 5 Ekim 08:58 abc.txt -rw-r-- r-- 1 kök kök 9818695 5 Ekim 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 kök kök 204057 5 Ekim 08:58 ath.html -rw-r-- r-- 1 kök kök 4360 5 Ekim 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Her üç dosya da artık uzak sisteme kopyalanmıştır.
Uzak sisteme bir dizini kopyalama
Kullanabilirsiniz scp
yerel sisteminizden uzak sisteme bir dizini kopyalama komutu. İşlem, bir dosyayı kopyalamaya benzer. Dizinin içeriğini de kopyalamak için -r
seçeneği ile scp
emretmek.
bu -r
seçeneği, bir dizini yinelemeli olarak kopyalamak için kullanılır. Bu, dizindeki tüm alt klasör ve dosyaların da kopyalanacağı anlamına gelir.
Genel sözdizimi:
scp -r [dizin yolu] remote_username@remote_host:[target_directory]
Örnek:
scp -r PycharmProjects [email protected]:gaurav
Çıktı:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected]'in parolası: __main__.py %100 623 7.8KB/sn 00:00 __init__.py %100 23 0.4KB/sn 00 :00 tamamlama.py %100 2929 28,1KB/sn 00:00 search.py %100 4728 38,7KB/sn 00:00 uninstall.py %100 2963 32,5KB/sn 00:00 hash.py %100 1681 21.3KB/ s 00:00 check.py 100% 1430 16.8KB/sn 00:00 configuration.py 100% 7125 50.4KB/sn 00:00 show.py 100% 6289 49.8KB/sn 00:00 download.py 100% 6623 48,2 KB/sn 00:00 gaurav@ubuntu:~$
Kullanmak -r
seçeneği ile scp
komutu, dizindeki tüm alt klasörleri ve dosyaları yerel makineden uzak sisteme kopyalar.
scp işlemi hakkında ayrıntılı bilgi görüntüleme
kullanabilirsiniz -v
(küçük harf v
) uzak veya yerel sisteminizde kopyalanmakta olan dosyalar hakkındaki bilgileri görüntüleme seçeneği. Bu tür çıktı, ayrıntılı çıktı olarak da adlandırılır.
Bu seçenek kullanıldığında, dosyayla ilgili tam hata ayıklama bilgisi ekranda görüntülenir.
Genel Sözdizimi:
scp -v [dosya_adı] user_name@user_host:
Örnek:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:takım
Çıktı:
gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Yürütme: program /usr/bin/ssh ana bilgisayar 159.89.170.11, kullanıcı kökü, komut scp -v -t ekip OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Aralık 2017 debug1: Yapılandırma verilerini okuma /home/gaurav/.ssh/config debug1: Yapılandırma verilerini okuma /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config satır 19: * debug1 için seçenekler uygulanıyor: 159.89.170.11 [159.89.170.11] bağlantı noktası 22'ye bağlanılıyor. debug1: Bağlantı kuruldu. debug1: key_load_public: Böyle bir dosya veya dizin yok debug1: kimlik dosyası /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz %100 9589KB 99.8KB/s 01:36 debug1: client_input_channel_req: kanal 0 rtype çıkış durumu yanıtı 0 hata ayıklama1: kanal 0: boş: istemci oturumu, nchannels 1 hata ayıklama1: fd 0 temizleniyor O_NONBLOCK hata ayıklama1: fd 1 temizleniyor O_NONBLOCK Aktarıldı: gönderildi 9826736, 4016 bayt, 97.2 saniyede alındı Saniyede bayt: gönderildi 101133.9, 41.3 hata ayıklama alındı1: Çıkış durumu 0 gaurav@ubuntu:~$
Burada çıktıda, dosyanın hata ayıklama bilgilerinin terminalinizde görüntülendiğini görebilirsiniz. scp
komutu ile birlikte kullanılır. -v
seçenek.
Dosyaları iki uzak ana bilgisayar arasında aktarma
Linux, birden çok uzak ana bilgisayara bağlanmanıza izin verir. kullanarak iki uzak ana bilgisayar arasında dosya ve dizin aktarabilirsiniz. scp
emretmek.
Genel Sözdizimi:
scp remote_user_1@host_1:/[file_name] remote_user_2@host_2:[folder_to_save]
Sözdizimi biraz daha geniş görünebilir ancak oldukça basittir. Burada, komutun ilk kısmı, dosyanın kopyalanacağı uzak kullanıcı hakkında girdi verir. iki nokta üst üste (:) ve /
iki uzak makine arasında aktarılacak dosya adını veya dizin adını belirtmek için kullanılır.
İkinci kısım, dosyanın kopyalanacağı hedef uzak sistem hakkında bilgi verir.
Örnek:
scp -r [email protected]:gaurav [email protected]:/takım
Burada, yerel sistemden uzak bir sisteme özyinelemeli olarak 'gaurav' adlı bir dizini kopyalayacağız. Dosya, uzak sistemdeki bir "ekip" klasörüne kopyalanacaktır.
Çıktı:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected]'ün şifresi: 1.py %100 134 261.3KB/sn 00:00 options.py %100 377 949.2KB/sn 00:00 abc.txt %100 0 0.0KB/sn 00:00 ath.html %100 199KB 41.8MB/sn 00:00 gaurav@ubuntu:~$
Burada, kullandık scp
'gaurav' adlı bir dizini bir uzak sunucudan diğerine aktarmak için yerel sistemdeki komut.
Dosyaları uzak sistemden yerel sisteminize aktarın
Dosyaları veya dizinleri uzak sistemden yerel sisteminize kolayca aktarabilirsiniz. scp
emretmek. Daha basit bir deyişle, uzak sunucudan yerel sisteminize birden çok dosya veya dizin indirebilirsiniz. scp
emretmek.
Genel Sözdizimi:
scp remote_username@user_host:/files/file.txt /[klasör_of_local_system]
Çıktı:
gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected]'in şifresi: how.txt 100% 11 0.1KB/sn 00:00 gaurav@ubuntu:~$
Burada, dosyayı uzak sunucudan ana dizine indirdim (kopyaladım). Bu nedenle, nokta kullandım (.
) dosyayı ana dizine kopyalamak için komutta belirtmek için.
Örnek Çıktı:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 6 Ekim 09:49 how.txt gaurav@ubuntu:~$
Burada, dosya şimdi uzak sunucudan ana dizine kopyalandı.
Aynı şekilde, uzak sunucudan birden çok dosya veya dizin indirebilirsiniz. scp
uygun seçeneklerle komut verin.
Daha hızlı aktarım yapmak için dosyaları sıkıştırma
Bazen büyük dosyaların aktarılması zaman alabilir. kullanılırken bu sorun giderilebilir. scp
ile komut -C
(büyük harf C
) seçenek.
Kullanmak -C
seçeneği, daha büyük boyutlu dosyaları sıkıştırarak daha hızlı aktarımı kolaylaştırır ve böylece zaman kazandırır.
Bu seçenekle ilgili ilginç bir gerçek, dosyanın hedef sistemde orijinal boyutuyla kopyalanması, ancak aktarım işlemi sırasında boyutun daha hızlı bir aktarım sağlamak için sıkıştırılmasıdır. Böylece sıkıştırma sadece ağ üzerinde yapılır.
Genel Sözdizimi:
scp -C [dosya_adı] user_name@user_host:[hedef_klasör]
Aradaki farkı anlamak için karşılaştırmalı bir örnek görelim.
-C seçeneği olmadan transfer:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Yürütme: program /usr/bin/ssh ana bilgisayar 68.183.82.183, kullanıcı kökü, komut scp -v -r -t ekibi OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 Aralık 2017 debug1: /home/trinity/.ssh/config debug1 yapılandırma verilerinin okunması: /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config satır 19: * debug1 için seçeneklerin uygulanması : 68.183.82.183 [68.183.82.183] 22 numaralı bağlantı noktasına bağlanıyor. hata ayıklama1: Bağlantı kuruldu. debug1: client_input_channel_req: kanal 0 rtype çıkış durumu yanıtı 0 hata ayıklama1: kanal 0: boş: istemci oturumu, nchannels 1 hata ayıklama1: fd 0 temizleniyor O_NONBLOCK hata ayıklama1: fd 1 temizleniyor O_NONBLOCK Aktarıldı: 7516504, gönderildi, 74.6 saniyede 4008 bayt alındı Bayt saniyede: 100693.7 gönderildi, 53,7 hata ayıklama alındı1: Çıkış durumu 0 gaurav@ubuntu:~$
Yukarıdakilerden, aktarım için gereken sürenin 74,6 saniye olduğunu görebiliriz. Aynı dosyayı -C seçeneğini kullanarak aktarmayı deneyeceğiz ve farkı gözlemleyeceğiz.
-C seçeneği ile transfer:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Yürütme: program /usr/bin/ssh ana bilgisayar 68.183.82.183, kullanıcı kökü, komut scp -v -r -t ekibi OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 Aralık 2017 debug1: /home/trinity/.ssh/config debug1 yapılandırma verilerinin okunması: /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config satır 19: * debug1 için seçeneklerin uygulanması : 68.183.82.183 [68.183.82.183] 22 numaralı bağlantı noktasına bağlanıyor. hata ayıklama1: Bağlantı kuruldu. . . webupload.img %100 1834KB 98.7KB/sn 00:18 Dosya gönderme modları: C0664 1877552 router.img Alıcı: C0664 1877552 router.img router.img %100 1834KB 100.3KB/sn 00:18 Alıcı: E Dosya gönderme modları: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Alıcı: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip %100 3666KB 218.5KB/s 00:16 Havuz: E hata ayıklama1: client_input_channel_req: kanal 0 rtype çıkış durumu yanıtı 0 hata ayıklama1: kanal 0: boş: istemci oturumu, nchannels 1 hata ayıklama1: fd 0 temizleme O_NONBLOCK hata ayıklama1: fd 1 temizleme O_NONBLOCK Aktarıldı: 7518864 gönderildi, 3828 bayt, 51.0 saniyede alındı. 999, faktör 0.68 gaurav@ubuntu:~$
Burada, kullanarak kolayca gözlemleyebiliriz. -C
seçeneği ile scp
komutu, dosyayı ağ üzerinden sıkıştırmamıza izin vererek zaman kazandıran bir seçenek olduğunu kanıtladı.
Dosya aktarımı için farklı bir ssh bağlantı noktası kullanma
kullanırken scp
dağıtılan varsayılan bağlantı noktası komutu 22 numaralı bağlantı noktası
. Kullanıcı, bu bağlantı noktası seçimini kişiselleştirme özgürlüğüne sahiptir. kullanabilirsiniz -P
(büyük harf P seçeneği) ile scp
İstediğiniz bağlantı noktasını kullanmak için komut.
Genel Sözdizimi:
cp -P [yeni_port_numarası] [dosya_adı/dizin_adı] uzak_kullanıcı@anasistemi:[hedef_klasör]
Örnek:
scp -P 4248 dlink [email protected]:ekip
Yukarıdaki komutu kullanarak dosya uzak sunucuya aktarılacaktır. Ancak bu sefer kullanılan bağlantı noktası bağlantı noktası 4248
varsayılan yerine 22 numaralı bağlantı noktası
.
Çözüm
Bu öğreticiden geçtikten sonra, dinamik doğası hakkında bilgi edindik. scp
Dosyaları bir sistemden diğerine aktarmak veya kopyalamak için kullanılan komut. Bu seçenek, uzak sunucudan dosya veya dizin indirmek için de kullanılabilir. Böylece, şu sonuca varabiliriz: scp
komutu, aynı anda birden fazla sistemi ve uzak sunucuları işlemeniz gerektiğinde dosya aktarımları için çok yararlı olduğunu kanıtlıyor.