Rsync yardımcı programını kullanarak dosya ve klasörleri kopyalama ve yedekleme
Rsync, dosya ve klasörleri kopyalamak için hızlı ve çok yönlü bir araçtır. Bu yardımcı program, verileri hem yerel olarak hem de INTROSERV'in Cloud Storage'ı da dahil olmak üzere diğer sunuculara kopyalayabilir. Yardımcı programın seçenekleri, veri kopyalama ve yansıtmanın birçok yönünü kontrol etmenizi sağlar. Yararlı özelliklerden biri, aktarım sırasında verileri sıkıştırma yeteneğidir; bu, ağ bant genişliği sınırlayıcı faktör olduğunda ağ trafiğini azaltabilir ve aktarım hızını artırabilir. Diğer bir avantaj ise Rsync'in güncellenmesi gerekmeyen dosyaları aktarmaktan kaçınmasıdır. Varsayılan olarak, dosya boyutunu ve değiştirilme zamanını karşılaştırır ve yalnızca değişmiş görünen dosyaları aktarır; bu da büyük dizinleri senkronize ederken kuşkusuz zaman kazandırır.
Neden -a bayrağı kullanılmalı? -a (archive) seçeneği en yaygın tercihtir. Özyinelemeli kopyalamayı etkinleştirir ve izinler, sahiplik, grup, değiştirilme zamanları ve sembolik bağlantılar gibi ortak dosya niteliklerini korur. -a zaten özyinelemeyi içerdiğinden, ayrıca -r eklemenize gerek yoktur.
Yardımcı program seçenekleri
SSH protokolünü kullanarak dosya ve dizinleri uzaktaki INTROSERV Cloud Storage'a kopyalamak için Rsync kullanımına ilişkin örneklere bakalım.
Bu komutlar evrenseldir. SSH üzerinden herhangi bir uzak sunucuyla dosyaları senkronize etmek için hedef adresi ve yolu değiştirmeniz yeterlidir.
En sık kullanılacak olan yardımcı programın başlıca seçeneklerine bir göz atalım. Mevcut seçeneklerin daha ayrıntılı bir listesi man belgelerinde (man rsync komutu) bulunabilir:
-v – işlem hakkında ayrıntılı bilgi görüntüler
-c – dosya sağlama toplamlarını kontrol eder
-q – minimum bilgi
-a – arşivleme modu
-R – göreli yollar
-y – daha yeni dosyaların üzerine yazma
-b – yedek kopya oluşturur
-l – sembolik bağlantıları kopyalar
-L – bağlantıların içeriğini kopyalar
-H – sabit bağlantıları kopyalar
-g – grubu kaydeder
-p – dosya izinlerini korur
-t – değiştirilme zamanını kaydeder
-x – yalnızca bu dosya sisteminde çalışır
-e – başka bir aktarım protokolü kullanır (örneğin, ssh)
-z – aktarımdan önce dosyaları sıkıştırır
--delete – kaynakta bulunmayan dosyaları siler
--exclude – dosyaları hariç tutar
--recursive – dizinleri özyinelemeli olarak listeler
--no-recursive – özyinelemeyi devre dışı bırakır
--progress – dosya aktarım ilerlemesini gösterir
--stat – aktarım istatistiklerini gösterir
--max-size – aktarım için maksimum dosya boyutu
--bwlimit – dosya aktarımları için hız sınırı
Söz dizimi hakkında kısa açıklama
Sondaki eğik çizgi (/) kuralı. Çoğu kullanıcının hata yaptığı nokta burasıdır: /klasor (eğik çizgi olmadan) klasörün kendisini kopyalar. /klasor/ (eğik çizgi ile) yalnızca klasörün içeriğini kopyalar.
rsync -az --progress /home/user/test.file boxxxx@storage_ip:/remote_folder/
-a – arşiv modu: dosya niteliklerini koruyan özyinelemeli bir kopya
-z – aktarım sırasında verileri sıkıştırır
--progress – aktarım ilerlemesini gösterir
/home/user/test.file – bu, aktarılması gereken dosyanın yolu ve dosyanın kendisidir
boxxxx@storage_ip: – bu, hedef kaynaktır (örneğimizde bu bir bulut depolama alanıdır, ancak uzak bir sunucu da olabilir). boxxxx kullanıcı adıdır, @ işaretinden sonra kaynak adı veya uzak sunucunun IP adresi gelir
/remote_folder/ – bu, uzak bir kaynak üzerindeki bir klasördür. Örneğimizde, INTROSERV Cloud Storage içinde.
Bir dosyayı uzak depolamadaki bir klasöre kopyalama
rsync -az --progress /home/user/Desktop/test.file boxxxx@storage_ip:/remote_folder/
Depolamaya bağlanmak için şifre girmeniz istenecektir. Şifreyi girin ve devam edin; dosyanın aktarım ilerlemesini ve hızını göreceksiniz.
Bir klasörü uzak depolamadaki bir klasöre kopyalama
Kaynak klasör ve hedef klasör satırlarındaki eğik çizgilere dikkat edin. Kaynak klasörde eğik çizginin bulunmaması, yerel Desktop klasörünün kendisini, tüm içeriğiyle birlikte remote_folder klasörüne aktarmak istediğimiz anlamına gelir.
rsync -az --progress /home/user/Desktop boxxxx@storage_ip:/remote_folder/
Dizinin ve içindeki tüm dosyaların aktarıldığını göreceksiniz.
Yerel bir klasörün içeriğini uzak depolamadaki bir klasöre kopyalama
Kaynak klasörün sonundaki eğik çizgiye dikkat edin. Bunun bulunması, yardımcı programın yerel klasörün içeriğini uzak depolamadaki bir klasöre kopyalaması gerektiği anlamına gelir.
rsync -az --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
İlerlemeyi ve kopyalama hızını göreceksiniz.
Bir klasörü uzak depolamadan yerel sunucudaki bir klasöre kopyalama
Rsync ile uzak depolamadan bir klasörün kopyalanmasını başlatabilirsiniz. Komut şu şekildedir:
rsync -az --progress boxxxx@storage_ip:/remote_folder /home/user/Desktop/
Uzak bir klasörün yerel sunucudaki bir klasöre kopyalanmasının ilerlemesini ve hızını göreceksiniz.
Bir klasörün içeriğini uzak depolamadan yerel sunucudaki bir klasöre kopyalama
Burada da kaynak klasör yolunun sonundaki eğik çizgiye dikkat etmekte fayda var. Bunun bulunması, yalnızca klasörün içeriğinin kopyalanması gerektiği anlamına gelir.
rsync -az --progress boxxxx@storage_ip:/remote_folder/ /home/user/Desktop/
Dosyaları hariç tutarak ve/veya dahil ederek bir klasörün içeriğini kopyalama
Yardımcı program, hangi dosyaların aktarılacağını ve hangilerinin hariç tutulacağını açıkça belirtmenizi sağlar. Bunun için --include ve --exclude seçeneklerini kullanın. Kurallar sırayla işlenir, bu nedenle bir dahil etme kuralı, aksi takdirde aynı dosyayla eşleşecek bir hariç tutma kuralından önce gelmelidir.
Kuru çalıştırma ile test edin. Birçok dosyayı değiştiren veya silen bir komutu çalıştırmadan önce -n veya --dry-run bayrağını ekleyin. Rsync, gerçekte hiçbir şeyi taşımadan veya silmeden tam olarak ne yapacağını size gösterecektir.
rsync -az --progress --include='test.file' --exclude='*' /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Bu komut test.file dosyasını aktarır ve kaynak dizindeki diğer her şeyi hariç tutar. Aktarımı yalnızca dahil edilen tek dosyayla sınırlayan şey --exclude='*' kuralıdır, bu nedenle burada her iki seçenek de birlikte gereklidir.
Yalnızca hedef klasördeki dosyalardan farklı olan dosyaları kopyalama
Rsync, varsayılan olarak bir dosyanın aktarılması gerekip gerekmediğine boyutuna ve değiştirilme zamanına göre karar verir. Rsync'in bunun yerine dosya içeriğini sağlama toplamına göre karşılaştırmasını istediğinizde -c seçeneğini kullanın. Bu, zaman damgalarına güvenilemediğinde daha güvenilirdir, ancak her iki tarafın da sağlama toplamlarını hesaplamak için dosyaları okuması gerektiğinden daha yavaştır.
rsync -azc --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
-c ile Rsync, kaynak ve hedef dosyaların içeriğini sağlama toplamlarını kullanarak karşılaştırır ve yalnızca içeriği farklı olan dosyaları aktarır.
Standart olmayan bir SSH portu ile SSH üzerinden Rsync kullanma
SSH portu değiştirilmiş bir sunucuya/sunucudan dosya aktarmak için -e 'ssh -p port_number' seçeneğini kullanın.
SSH portu 44 olarak değiştirilmiş bir sunucuya bir dosya kopyalamak için komut şu şekilde olacaktır:
rsync -azc --progress -e 'ssh -p 44' /home/user/Desktop/ user@server_ip:/remote_folder/
Güvenlik notu: Varsayılan SSH portunu değiştirmek, otomatik taramaları ve istenmeyen bağlantı denemelerini azaltabilir, ancak anahtar tabanlı kimlik doğrulama ve güvenlik duvarı kuralları gibi uygun SSH güvenliğinin yerini tutmaz. Güvenlik duvarınızın seçtiğiniz porttaki trafiğe her zaman izin verdiğinden emin olun.