Linux'un en büyük özelliklerinden biri "shell" (kabuk) olarak adlandırılan komut satirinin çok güçlü olmasıdır. Ihtiyaciniz olan birçok seyi baska yazılıma gerek kalmadan shell uzerinden yapabilirsiniz. Bunlardan biri de SSH ile bağlanma imkanınız olan uzak bir bilgisayara güvenli olarak dosya kopyalayabilmektir. Bu yazıda bunun icin gerekli shell script'i yazacağım.
Asagidaki Linux shell script, tanımlı uzak sunucuya SSH uzerinden bağlanarak yerel dizindeki tum dosyalari uzak sunucudaki tanımlı dizine kopyalar. Bunun icin iki komut kullanabiliriz. Ilki yaygın kullanılan "scp" komutu ve ikincisi daha yeni ve akilli bir komut olan "rsync".
scp komutu dizindeki tum dosyalari sorgusuz kopyalar. rsync komutu ilk kopyalamada tum dosyalari kopyalarken sonrasında daha akıllıca davranarak sadece son kopyalamadan sonra değişen dosyalari kopyalar. Dolayisiyla sisteminiz rsync komutunu destekliyorsa bu komutu kullanmak daha pratik ve mantıklı.
scp ile tum klasörü degil de sadece tek dosya kopyalamak icin klasör adlarina dosya adini da ekleyin ve "-r" secenegini kaldırın.
Siz scriptte sunucu ve kullanıcı adi ve ilgili yerel ve uzak klasörleri değiştirerek istediğiniz gibi deneme yapabilirsiniz.
#!/usr/bin/env bash
#Script to copy files from local to remote host. local_dir="/home/uno/test1/" #Yerel Dizin
remote_dir="/home/dos/test2" #Uzak makinadaki dizin
remote_host="192.168.10.228" #Uzak makina adresi
remote_user="dos" #Uzak makina kullanıcı adi
echo "Files will be copied from local folder to remote host."
echo "Local Folder: ${local_dir}"
echo "Remote Folder: ${remote_dir}"
echo "Remote Host: ${remote_host}"
# rsync: Gerekirse Kopyala
rsync -av "${local_dir}" "${remote_user}"@"${remote_host}":"${remote_dir}"
# scp: Her turlu Kopyala
#scp -r "${local_dir}" "${remote_user}"@"${remote_host}":"${remote_dir}"
echo "Done."
Kodu kopyalayıp .sh uzantılı bir dosyaya kaydederek veya dogrudan shell'e yapistirarak kullanabilirsiniz.
Yorumlar
Yorum Gönder