Archive

Posts Tagged ‘Rsync nedir’

Rsync ve Backup İşlemi

Yedekleme, sistem yönetiminin en zor ve en ihmal edilen parçasıdır. Ve aynı zamanda en önemli kısmıdır. Donanım problemlerine, güvenlik açıklarına, ve en önemlisi son kullanıcı hatalarına karşı son çaredir. Pahalı teyp sürücülerine, hatalı programlara binlerce dolar harcanırken aslında çok daha iyi bir çözüm var : Rsync .

Rsync, oldukça sık kullanılan güzel bir dosya transfer uygulamasıdır. Yedekleme ya da senkronizasyon işlemlerinde sadece değişen dosyaların (incremental) kopyalanmasını sağlayarak işlemleri hızlandırmayı amaçlamaktadır. Rsync ile lokal yedekleme yapılabildiği gibi uzaktaki bir sisteme ssh üzerinden kopyalama yapabilmek de mümkündür.
Özellikle, bir çok dosya barındıran büyük dizinlerin hızlıca yedeklenme ihtiyacı gibi durumlar için ideal olan rsync, web sunucularda, kök dizinlerin birden fazla sistemde senkronize olarak tutulması (yansılama) gibi işlemler için sıklıkla kullanılmaktadır.

Özellikle, bir çok dosya barındıran büyük dizinlerin hızlıca yedeklenme ihtiyacı gibi durumlar için ideal olan rsync, web sunucularda, kök dizinlerin birden fazla sistemde senkronize olarak tutulması (yansılama) gibi işlemler için sıklıkla kullanılmaktadır.

Rsync’nin özelliklerinden bahsedelim.
Tüm bir dizinin ya da dosya sisteminin yedeklenebilmesi.
Root yetkisine gereksinim duyulmaması.
Lokal sistem üzerinde yedekleme/senkronizasyon.
Lokal sistemden, uzaktaki sisteme yedekleme/senkronizasyon.
Uzaktaki sistemden, lokal sisteme yedekleme/senkronizasyon.
Network üzerinden transfer için ssh kullanabilme.
Rsync daemon modu ile sunucu desteği.
Exclude anahtarı ile spesifik dosya/dizinlerin, dosya tiplerinin hariç tutulabilmesi.

Debian ve ubuntu gibi dağıtımlarda kurulum için aşağıdaki işlem yapılır

Kurulum için:
apt-get install rsync
Kullanımı ise:
rsync –a kaynakdizin hedefdizin
Eğer yedekler uzaktaki bir sisteme transfer edilmek istenirse komut aşağıdaki gibi kullanılabilir. (Elbette, her iki sistemde de rsync kurulu olmalıdır.)
rsync -a kaynakdizin uzaksistem:hedefdizin
Eğer yedekler, uzaktaki bir sistemden alınacaksa;
rsync -a uzaksistem:kaynakdizin hedefdizin
Komutta kullanılan -a, [--archive] anahtarı

“-a anahtarının parametreleri de aşağıdaki gibidir;”

-r : Kopyalama işlemi, alt dizinlerde kapsanacak şekilde recursive olarak yapılır.
-l : Sembolik linkler, sembolik link olarak kopyalanır.
-p : Dosya ve dizinlerin izin değerleri korunur.
-t : Dosyaların değiştirilme (mtime) bilgisi de transfer edilir. Senkronizasyon işlemleri için bu anahtar kullanılmalıdır.
-g : Dosya ve dizinlerin grup bilgileri korunur.
-o : Dosya ve dizinlerin sahip bilgileri korunur.
-D : Device dosyaları vs hedefte oluşturulur.
-H : Hard linkleri de transfer eder.
-z : Transfer sırasında dosyaları sıkıştırır.
–exclude : Belirtilen PATTERN, kopyalama işleminden muaf tutulur. Örnekler bölümünde detaylandırılacak.
–dry-run : Komut çalıştırıldığı zaman, hangi işlemlerin gerçekleşeceği gösterilir ancak işlemler gerçekte uygulanmaz.
–delete : Kaynak tarafta artık bulunmayan dosyalar, hedef taraftan da silinir. Dikkatli kullanmanızı öneririm.
–human-readable : Çıktılar, human-readable (anlaşılır) formatta verilir.

Size birkaç örnek de vermekte fayda var sürekli terimlerle konuşmak olmaz…

Lokal Diskler Arası Kopyalama
Lokal yedekleme işlemleri için rsync komutu öntanımlı hali ile kullanılabilir. Örenek verecek olursak /home/kullanici adlı şahsi dosyalarınızın bulunduğu dizini, sistemenizde /media/disk/ dizinine bağlanmış olan harici diskinize aktarmak için aşağıdaki komutu kullanabiliriz.
rsync -av /home/kullanici/ /media/disk/yedekler/
Lokalden Uzaktaki Sisteme Kopyalama
Gene yukarıdaki örnekten gidersek, /home/kullanici/ dizininde bulunan dosyaları, uzaktaki bir sunucuya yedeklemek için rsync şu şekilde kullanabiliriz.
rsync -av /home/kullanici/ kullanici@192.168.12.12:yedekler/
Komutu çalıştırdığınız zaman, 192.168.12.12 ip’li sisteme SSH üzerinden bağlantı sağlanacak ve kullanıcı şifreniz sorulacaktır. Şifrenizi girdikten sonra /home/kullanici/ dizininde bulunan tüm dosyalar, uzaktaki sistemin /home/kullanici dizini altında oluşturulan yedekler klasörüne SSH üzerinden (güvenli olarak) kopyalanacaktır.
Şifre sorulmamasını istediğiniz durumlar için uzaktaki sisteme key-based authentication (anahthar üzerinden kimlik doğrulaması) ile erişebilmek üzere sisteminizi yapılandırmanız gerekir.

Uzak Sistemden Lokale Kopyalama
Bir önceki örneğin tersi olan bu kopyalama işleminde, uzaktaki bir sistemde bulunan bir dizin, lokaldeki bir dizine aşağıdaki şekilde transfer edilebilir:
rsync -av root@201.201.52.52:/yedekler/ /yedekler/
Bu şekilde, 201.201.52.52 ip’li sistemin /yedekler/ dizininde bulunan dosyalar, lokal sisteminizin /yedekler/ dizinine transfer edilecektir.

Exclude (Hariç Tutma) İşlemleri
Rsync’in –exclude parametresi, yedekleme sırasında, kopyalamadan muaf tutulacak dosya tiplerinin ya da dizinlerin belirtilebilmesine yaramaktadır.Bu sayede de gereksiz veya istemediğimiz güvenli olmayan dosya ve klasörleri de taşımayız..

Örnek olarak, /home/kullanici isimli şahsi dizininizde bir çok pdf dosyası olması ve bu dosyaların yedeklenmesine gerek duymamanız gibi durumlarda, exclude parametresi ile iş görecektir:
rsync -av --exclude '*.pdf' /home/kullanici/ root@201.201.52.52:/yedekler/
Böylece, pdf uzantılı dosyalara hariç, /home/kullanici/ dizinindeki tüm dosyalar, 201.201.52.52 ip’li sistemin /yedekler/ dizinine kopyalanacaktır.

–exclude parametresi, dosyalar için olduğu gibi dizinler için de kullanılabilmektedir. Örneğin aşağıdaki komut, /home/kullanici/ dizini altındaki “mustafayalcin” isimli klasoru yedekleme işleminden hariç tutmaktadır.
rsync -av --exclude 'mustafayalcin' /home/kullanici/ root@201.201.52.52:/yedekler/

Dry-Run
Kopyalama yapılacak yer test edilebilir. Bu da tabi veri güvenliği ve veri bütünlüğü açısından çok önemlidir.
rsync -avn /home/kullanici root@201.201.52.52:/yedekler/

Alıntıdır.