27Jun
rsync, yedekleme ve veri senkronizasyonu için inanılmaz derecede çok yönlülük sağlayan Unix benzeri sistemler için geliştirilmiş bir protokoldür. Dosyaları farklı dizinlere yedeklemek için yerel olarak kullanılabilir veya Internet üzerinden diğer ana makinelere senkronize etmek üzere yapılandırılabilir.
Windows sistemlerinde kullanılabilir, ancak çeşitli portlardan( Cygwin gibi) kullanılabilir, bu nedenle Linux'ta kurulumundan bahsedeceğiz.Önce, rsync istemcisini kurmalı / güncelleştirmeliyiz. Red Hat dağıtımlarında komut "yum install rsync" ve Debian'da ise "sudo apt-get install rsync" dir.
Red Hat / CentOS'taki komut, root olarak oturum açtıktan sonra( bazı Red Hat dağıtımlarınınsudo yöntemini destekleyin).
Debian / Ubuntu'da komut.
Yerel yedeklemeler için rsync kullanma
Bu öğreticinin ilk bölümünde dosyaları Directory1'den Directory2'ye yedekleyeceğiz. Bu dizinlerin her ikisi de aynı sabit disktedir, ancak dizinler iki farklı sürücüye aitse bu aynı işe yarayabilir. Yapılandırmak istediğiniz yedeklemelerin türüne bağlı olarak buna yaklaşım yapmanın birkaç farklı yolu vardır.Çoğu durumda aşağıdaki kod satırı yeterli olacaktır:
$ rsync -av --delete /Directory1/ /Directory2/
Yukarıdaki kod, Directory1'in içeriğini Directory2 ile senkronize eder ve ikisi arasında herhangi bir fark bırakmaz. Rsync, Directory2'nin Directory1'in olmayan bir dosyasına sahip olduğunu bulursa onu silecektir. Rsync, Directory1'de değiştirilmiş, oluşturulmuş veya silinmiş bir dosyayı bulursa, Directory2 için aynı değişiklikleri yansıtacaktır.
Özel ihtiyaçlarınıza göre kişiselleştirmek için rsync için kullanabileceğiniz bir çok farklı anahtar var.
1. -a = özyinelemeli( dizinlere tekrarlama), bağlantılar( sembolik bağlarla kopya sembolikleri), permalar( izinleri koruma), saatler( değiştirme sürelerini koru), grup( grup koruyun), sahibi( sahibi koruyun), cihaz dosyalarını korur ve özel dosyaları korur.
2. -v = ayrıntılı.Ayrıntılı olduğunu düşünmemin nedeni, rsync'in ne yedeklediğini tam olarak görebilmenizdir. Bunu düşünün: Sabit diskiniz kötü gidiyorsa ve bilginiz olmadan dosyaları silmeye başlarsa, rsync komut dosyanızı çalıştırırsanız ve bu değişiklikleri yedeklerinize iter ve böylece almak istemediğiniz bir dosyanın tüm örneklerini silersinizkurtulmak?
3. -delete = Bu, rsync'e Directory1'de olmayan, Directory2 içerisindeki tüm dosyaları silmek üzere söyler. Bu seçeneği kullanmayı seçerseniz, yukarıda belirtilen nedenlerden dolayı ayrıntılı seçenekleri de kullanmanızı öneririm.
Yukarıdaki komut dosyasını kullanarak, Directory1'i Directory2'ye yedeklemek için rsync'i kullanarak üretilen çıktı çıktı.Ayrıntılı anahtar olmadan bu gibi ayrıntılı bilgileri almazsınız.
Yukarıdaki ekran görüntüsü, File1.txt ve File2.jpg dosyalarının yeni veya başka bir şekilde Directory2'de bulunan kopyalardan tespit edildiğini ve dolayısıyla yedeklendiğini tespit ettiğini bize bildiriyor. Noob İpucu: Rsync komutumdaki dizinlerin sonundaki eğik çizgilere dikkat edin - bunlar gereklidir, onları hatırladığınızdan emin olun.
Bu dersin sonlarına doğru birkaç kullanışlı anahtarı inceleyeceğiz, ancak "man rsync" yazıp kullanacağınız anahtarların tam listesini görüntüleyebileceğiniz tam bir liste görmek için bunu unutmayın.
Bu, yerel yedeklemelerle ilgili olarak kapsar. Gördüğünüz gibi, rsync'in kullanımı çok kolaydır.İnternet üzerinden harici bir ana makine ile veri senkronizasyonu için kullandığınızda biraz daha karmaşık hale gelir, ancak size basit, hızlı ve güvenli bir şekilde bunu göstereceğiz.
Dış yedeklemeler için rsync'i kullanma
rsync, harici yedeklemeler için çeşitli şekillerde yapılandırılabilir, ancak SSH ile rsync'i tünel haline getirmenin en pratik( aynı zamanda en kolay ve en güvenli) yöntemi üzerinden geçeceğiz.Çoğu sunucu ve hatta birçok müşteri zaten SSH'ye sahiptir ve rsync yedeklemeleriniz için kullanılabilir. Bir Linux makinesini yerel bir ağda başka bir bilgisayara yedekleme işlemini göstereceğiz. Bir ev sahibi internette bir yerde olsaydı süreç aynı olurdu, sadece 22 numaralı portun( veya SSH'nin konfigüre edilmiş olduğu herhangi bir portun) şeylerin sunucunun yanındaki herhangi bir ağ ekipmanına yönlendirilmesi gerektiğini unutmayın.
Sunucuda( yedekleri alacak olan bilgisayar) SSH ve rsync'in kurulu olduğundan emin olun.
# yum -y install ssh rsync
# sudo apt-get install ssh rsync
Sunucuya SSH ve rsync yüklemenin dışında gerçekten yapılması gereken şey dosyaları saklamak istediğiniz sunucudaki depoları kurmaktırup yapın ve SSH'nin kilitlendiğinden emin olun. Kullanmayı planladığınız kullanıcının karmaşık bir şifreye sahip olduğundan emin olun ve SSH'nin dinlediği bağlantı noktasını değiştirmek de iyi bir fikir olabilir( varsayılan 22'dir).
Yerel bilgisayarda rsync'i kullanmak için yaptığımız komutu yerine getireceğiz fakat SSH ile rsync'i yerel ağımdaki bir sunucudan tünellemek için gerekli eklemeleri içereceğiz."192.168.235.137" ye bağlanan "geek" kullanıcısı için ve yukarıdaki ile aynı anahtarları( -av -delete) kullandığımız için aşağıdakileri çalıştıracağız:
$ rsync -av -delete -e ssh /Directory1/ [email protected]: /Directory2/
If22'den başka bir bağlantı noktasını dinleyen SSH'ye sahipseniz, bu örnekte 12345 numaralı bağlantı noktasını kullandığım gibi, bağlantı noktası numarasını belirtmeniz gerekir:
$ rsync -av -delete -e 'ssh -p 12345' /Directory1/ [email protected]: /Directory2/
Yukarıdaki ekran görüntüsünden de görebileceğiniz gibi, ağ üzerinden yedekleme yaparken verilen çıktı, yerel olarak yedeklendiğinizde olduğu gibi hemen hemen aynıdır; değiştirdiğiniz tek şey kullandığınız komuttur. Ayrıca, bir şifre sorulduğuna dikkat edin. Bu, SSH ile kimlik doğrulama yapmak içindir. Bu işlemi atlamak için RSA anahtarları ayarlayabilirsiniz; bu da, rsync'in otomatikleştirilmesini basitleştirecektir.
rsync yedeklemelerini otomatikleştirme
Cron, Linux'ta rsync gibi komutların yürütülmesini otomatikleştirmek için kullanılabilir. Cron'u kullanarak, Linux sistemimizde gece yedekleri çalıştırılabilir veya sıklıkla çalıştırılmasını istersiniz.
Oturum açmış olduğunuz kullanıcı için cron tablo dosyasını düzenlemek için şunu çalıştırın:
$ crontab -e
Bu dosyayı düzenlemek için vi'ya aşina olmanız gerekir. Eklemek için "I" yazın ve cron tablo dosyasını düzenlemeye başlayın.
Cron aşağıdaki sözdizimini kullanır: saatin dakikası, günün saati, ayın günü, yılın ayı, haftanın günü, komut.
İlk bakışta biraz kafa karıştırıcı olabilir, bu yüzden size bir örnek vereyim. Aşağıdaki komut her akşam 10'da rsync komutunu çalıştırır:
0 22 * * * rsync -av --delete /Directory1/ /Directory2/
İlk "0" saatin dakikasını belirtir ve "22" 10 PM'i belirtir. Bu komutun günlük olarak çalıştırılmasını istediğimizden, alanların geri kalanlarını yıldızlarla silerek sonra rsync komutunu yapıştırıyoruz.
Cron yapılandırmasını tamamladıktan sonra, escape tuşuna basın ve ardından ": wq" yazın( tırnak işaretleri olmadan) ve enter tuşuna basın. Bu, vi'deki değişikliklerinizi kaydeder.
Cron, bundan çok daha derinlemesine yararlanabilir, ancak bu konuda devam etmek, bu öğreticinin kapsamı dışındadır.Çoğu kişi basit bir haftalık veya günlük yedekleme isteyecek ve size gösterdiğimiz şey bunu kolayca gerçekleştirebiliyor. Cron hakkında daha fazla bilgi için lütfen man sayfalarına bakın.
Diğer yararlı özellikler
Yapabileceğiniz bir diğer yararlı şey, yedeklemelerinizi bir zip dosyasına koymaktır. Zip dosyasının nereye yerleştirilmesini istediğinizi belirtmeniz ve ardından bu dizini yedekleme dizininize rsynclemeniz gerekecektir.Örneğin:
$ zip /ZippedFiles/ archive.zip /Directory1/ &rsync -av --delete /ZippedFiles/ /Directory2/
Yukarıdaki komut, dosyaları Directory1'den alır ve bunları /ZippedFiles/ archive.zip dosyasına koyar ve daha sonra bu dizini Directory2 olarak tanımlar. Başlangıçta, bir dosyaya en ufak bir değişiklik yapıldığında zip dosyası değişeceğini göz önüne alırsak, bu yöntemin büyük yedeklemeler için verimsiz olacağını düşünebilirsiniz. Bununla birlikte, rsync yalnızca değişen verileri aktarır, zip dosyanız 10 GB'tır ve ardından Directory1'e bir metin dosyası eklerseniz, rsync bunu eklediğinizin tümünün( bir fermuar olmasına rağmen) bilecek ve sadece birkaç kilobaytdeğiştirilmiş verilerin.
rsync yedeklemelerinizi şifrelemek için birkaç farklı yol vardır. En kolay yöntem, sabit sürücünün kendisine( dosyalarınızın yedeklendiği) şifreleme yüklemektir. Başka bir yol da dosyalarınızı uzaktaki bir sunucuya( veya başka bir sabit sürücüye, yedekleme işleminiz ne olursa olsun) göndermeden önce şifrelemektir. Bu yöntemleri sonraki makalelerde de ele alacağız.
Seçtiğiniz seçenek ve özellikler ne olursa olsun, rsync şimdiye kadarki en verimli ve çok yönlü yedekleme araçlarından biri olduğunu kanıtlıyor ve basit bir rsync betiği bile verilerinizi kaybetmenize engel olabilir.