Yerel ve Uzak Dizinleri Eşitlemek için Rsync Nasıl Kullanılır
giriiş
Remote sync anlamına gelen Rsync , uzak ve yerel bir dosya senkronizasyon aracıdır. Dosyaların yalnızca değişen kısımlarını taşıyarak kopyalanan veri miktarını en aza indirmek için bir algoritma kullanır.
Bu öğreticide, Rsync’i tanımlayacağız, kullanırken sözdizimini gözden geçireceğiz, rsync
uzak bir sistemle senkronizasyon için Rsync’in nasıl kullanılacağını ve kullanabileceğiniz diğer seçenekleri açıklayacağız.
Önkoşullar
Dosyaları yerel ve uzak bir sistem arasında senkronize etmek için kullanma alıştırması yapmak için rsync
sırasıyla yerel bilgisayarınız ve uzak makineniz olarak işlev görecek iki makineye ihtiyacınız olacaktır. Bu iki makine, uygun şekilde yapılandırıldıkları sürece sanal özel sunucular, sanal makineler, kapsayıcılar veya kişisel bilgisayarlar olabilir.
Sunucuları kullanarak bu kılavuzu takip etmeyi planlıyorsanız, bunları yönetici kullanıcılarla kurmak ve her biri üzerinde bir güvenlik duvarı yapılandırmak akıllıca olacaktır. Bu sunucuları kurmak için, İlk Sunucu Kurulum Kılavuzumuzu izleyin .
Bu öğreticiyi takip etmek için ne tür makineler kullanırsanız kullanın, her ikisinde de SSH anahtarları oluşturmuş olmanız gerekir. Ardından, bu kılavuzun 2. Adımındaauthorized_keys
belirtildiği gibi her sunucunun ortak anahtarını diğer sunucunun dosyasına kopyalayın .
Bu kılavuz, Ubuntu 20.04 çalıştıran makinelerde doğrulanmıştır, ancak genellikle Linux tabanlı bir işletim sistemi çalıştıran ve rsync
kurulu olan tüm bilgisayarlarla çalışması gerekir.
Rsync’in Tanımlanması
Rsync, çok esnek bir ağ etkin senkronizasyon aracıdır. Linux ve Unix benzeri sistemlerde her yerde bulunması ve sistem komut dosyaları için bir araç olarak popülaritesi nedeniyle, varsayılan olarak çoğu Linux dağıtımında bulunur.
Rsync Sözdizimini Anlama
sözdizimi , , ve rsync
gibi diğer araçlara benzer şekilde çalışır .ssh
scp
cp
İlk önce, aşağıdaki komutu çalıştırarak ana dizininize geçin:
cd ~
Ardından bir test dizini oluşturun:
mkdir dir1
Başka bir test dizini oluşturun:
mkdir dir2
Şimdi bazı test dosyaları ekleyin:
touch dir1/file{1..100}
Artık dir1 içinde 100 boş dosya bulunan bir dizin var. Dosyaları listeleyerek onaylayın:
ls dir1
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
Ayrıca adında boş bir dizininiz var dir2. to’nun içeriğini aynı sistemde senkronize etmek için, “özyinelemeli” anlamına gelen ve dizin senkronizasyonu için gerekli olan bayrağı çalıştıracak dir1ve kullanacaksınız :dir2 rsync-r
rsync -r dir1/ dir2
Diğer bir seçenek ise -a, bir kombinasyon bayrağı olan ve “arşiv” anlamına gelen bayrağı kullanmaktır. Bu bayrak özyinelemeli olarak eşitlenir ve sembolik bağları, özel ve aygıt dosyalarını, değişiklik zamanlarını, grupları, sahipleri ve izinleri korur. Daha yaygın olarak kullanılır -rve kullanılması önerilen bayraktır. Önceki örnekle aynı komutu çalıştırın, bu sefer -abayrağı kullanarak:
rsync -a dir1/ dir2
Lütfen /önceki iki komutun sözdiziminde ilk argümanın sonunda bir bölü çizgisi ( ) olduğuna ve burada vurgulandığına dikkat edin:
rsync -a dir1/ dir2
Bu sondaki eğik çizgi, içeriğini belirtir dir1. Sondaki eğik çizgi olmadan, dir1dizin de dahil olmak üzere, dir2. Sonuç, aşağıdaki gibi bir hiyerarşi yaratacaktır:
~/dir2/dir1/[files]
rsyncBaşka bir ipucu, bir komutu çalıştırmadan önce argümanlarınızı iki kez kontrol etmektir . -nRsync, veya –dry-runseçeneklerini ileterek bunu yapmak için bir yöntem sağlar . -v“Ayrıntılı” anlamına gelen bayrak da uygun çıktıyı almak için gereklidir . aAşağıdaki komutta , nve vbayraklarını birleştireceksiniz :
rsync -anv dir1/ dir2
Şimdi, aşağıdaki gibi, sondaki eğik çizgiyi kaldırırken aldığınız çıktıyla bu çıktıyı karşılaştırın:
rsync -anv dir1 dir2
Bu çıktı artık yalnızca dizin içindeki dosyalar yerine dizinin kendisinin aktarıldığını gösteriyor.
Uzaktaki Bir Sistemle Senkronize Etmek için Rsync’i Kullanma
Uzak bir sistemle senkronize etmek için kullanmak rsync
için, yalnızca yerel ve uzak makineleriniz arasında yapılandırılmış ve rsync
her iki sistemde de kurulu SSH erişimine ihtiyacınız vardır. İki makine arasında SSH erişimi doğrulandıktan sonra dir1
, aşağıdaki sözdizimini kullanarak bir önceki bölümdeki klasörü uzak bir makineyle eşitleyebilirsiniz. Lütfen bu durumda asıl dizini aktarmak istediğinizi unutmayın, böylece sondaki eğik çizgiyi atlarsınız:
rsync -a ~/dir1 username@remote_host:destination_directory
Bu işleme, bir dizini yerel sistemden uzak bir sisteme “ittirdiği” için itme işlemi denir . Karşıt işlem ise çekme işlemidir ve uzak bir dizini yerel sistemle eşitlemek için kullanılır. Dizin dir1, yerel sisteminiz yerine uzak sistemde olsaydı, sözdizimi şöyle olurdu:
rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
Benzer cpve benzeri araçlar, kaynak her zaman ilk argümandır ve hedef her zaman ikincidir.
Diğer Rsync Seçeneklerini Kullanma
Rsync, önceki bölümde öğrendiğiniz bayrak seçenekleri gibi, yardımcı programın varsayılan davranışını değiştirmek için birçok seçenek sunar.
Metin dosyaları gibi önceden sıkıştırılmamış dosyaları aktarıyorsanız, şu -zseçenekle sıkıştırma ekleyerek ağ aktarımını azaltabilirsiniz:
rsync -az source destination
Bayrak -Pda faydalıdır. Bayrakları birleştirir –progressve –partial. Bu ilk bayrak, aktarımlar için bir ilerleme çubuğu sağlar ve ikinci bayrak, kesintiye uğrayan aktarımlara devam etmenizi sağlar:
rsync -azP source destination
Komutu yeniden çalıştırırsanız, hiçbir değişiklik yapılmadığından kısaltılmış bir çıktı alırsınız. Bu, Rsync’in değişiklik yapılıp yapılmadığını belirlemek için değişiklik sürelerini kullanma yeteneğini gösterir:
rsync -azP source destination
Bazı dosyalardaki değişiklik zamanını aşağıdaki gibi bir komutla güncelleyeceğinizi varsayalım:
touch dir1/file{1..10}
Ardından, rsyncile -azPtekrar çalışacaksanız, çıktıda Rsync’in yalnızca değiştirilen dosyaları akıllıca nasıl yeniden kopyaladığını fark edeceksiniz:
rsync -azP source destination
İki dizini gerçekten senkronize tutmak için, kaynaktan kaldırılmışlarsa dosyaları hedef dizinden silmek gerekir. Varsayılan rsyncolarak, hedef dizinden hiçbir şey silmez.
Bu davranışı –deleteseçeneği ile değiştirebilirsiniz. Bu seçeneği kullanmadan önce, istenmeyen veri kaybını önlemek için bir test gerçekleştirmek -niçin seçeneği kullanabilirsiniz:–dry-run
rsync -an –delete source destination
Senkronize ettiğiniz bir dizinde bulunan belirli dosyaları veya dizinleri hariç tutmayı tercih ederseniz, aşağıdaki –exclude=seçeneği izleyerek bunları virgülle ayrılmış bir listede belirterek bunu yapabilirsiniz:
rsync -a –exclude=pattern_to_exclude source destination
Dışlanacak belirli bir kalıbınız varsa, seçeneği kullanarak farklı bir kalıpla eşleşen dosyalar için bu dışlamayı geçersiz kılabilirsiniz –include=:
rsync -a –exclude=pattern_to_exclude –include=pattern_to_include source destination
Son olarak, –backupönemli dosyaların yedeklerini saklamak için Rsync’in seçeneği kullanılabilir. –backup-dirYedekleme dosyalarının depolanacağı dizini belirten seçenekle birlikte kullanılır :
rsync -a –delete –backup –backup-dir=/path/to/backups /path/to/source destination
Çözüm
Rsync, ağ bağlantılı bağlantılar üzerinden dosya aktarımlarını düzene sokabilir ve yerel dizin eşitlemeye sağlamlık katabilir. Rsync’in esnekliği, onu birçok farklı dosya düzeyinde işlem için iyi bir seçenek haline getirir.
Rsync’de ustalık, karmaşık yedekleme işlemleri tasarlamanıza ve nasıl ve neyin aktarıldığı üzerinde ayrıntılı kontrol elde etmenize olanak tanır.