Linux

Yerel ve Uzak Dizinleri Eşitlemek için Rsync Nasıl Kullanılır

haberler sunucucozumleri.com
Share

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, rsyncuzak 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 rsyncsı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 rsynckurulu 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 rsyncgibi diğer araçlara benzer şekilde çalışır .sshscpcp

İ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 rsynciçin, yalnızca yerel ve uzak makineleriniz arasında yapılandırılmış ve rsyncher 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.