Rsnapshot (Rsync Tabanlı) - Linux için Yerel/Uzak Dosya Sistemi Yedekleme Yardımcı Programı


rsnapshot, Perl dilinde yazılmış, yerel/uzak dosya sistemi yedekleme yardımcı programıdır ve <'nin gücünden yararlanır. Strong>Rsync ve SSH programı, Linux/Unix dosya sistemlerinin planlı artımlı yedeklerini oluştururken yalnızca yer kaplar tek bir tam yedekleme artı farklılıklar ve bu yedeklemeleri yerel sürücüde, farklı bir sabit sürücüde, harici bir USB bellekte saklayın , NFS'ye bağlı bir sürücüye veya ağ üzerinden SSH yoluyla başka bir makineye.

Bu makalede, artımlı saatlik, günlük, haftalık ve rsnapshot oluşturmak için rsnapshot'ın nasıl kurulacağı, kurulacağı ve kullanılacağı gösterilecektir. güçlü>aylık yerel yedeklemelerin yanı sıra uzak yedeklemeler. Bu makaledeki tüm adımları gerçekleştirmek için kök kullanıcı olmanız gerekir.

Adım 1: Linux'ta Rsnapshot Backup'ı Yükleme

Red Hat ve kullanıyorsanız rsnapshot'ın Yum ve APT kullanılarak kurulumu biraz farklılık gösterebilir. Debian tabanlı dağıtımlar.

RHEL/CentOS'ta

Öncelikle EPEL adlı üçüncü taraf deposunu kurup etkinleştirmeniz gerekecek. RHEL/CentOS sistemlerinize yüklemek ve etkinleştirmek için lütfen aşağıdaki bağlantıyı izleyin. Fedora kullanıcılarının herhangi bir özel depo yapılandırmasına ihtiyacı yoktur.

  1. RHEL/CentOS 6/5/4'te EPEL Deposunu Kurun ve Etkinleştirin

Gerekli ayarları yaptıktan sonra gösterildiği gibi komut satırından rsnapshot'ı yükleyin.

yum install rsnapshot
Debian/Ubuntu/Linux Mint'te

Varsayılan olarak rsnapshot, Ubuntu'nun depolarına dahil edilmiştir, dolayısıyla gösterildiği gibi apt-get komutunu kullanarak yükleyebilirsiniz.

apt-get install rsnapshot

Adım 2: SSH Parolasız Oturum Açmayı Ayarlama

Uzak Linux sunucularını yedeklemek için rsnapshot yedekleme sunucunuz, şifre olmadan SSH aracılığıyla bağlanabilecektir. Bunu başarmak için, rsnapshot sunucusunda kimlik doğrulaması yapmak üzere bir SSH genel ve özel anahtarları oluşturmanız gerekecektir. rsnapshot yedekleme sunucunuzda genel ve özel anahtarlar oluşturmak için lütfen aşağıdaki bağlantıyı izleyin.

  1. SSH Keygen Kullanarak SSH Şifresiz Giriş Oluşturun

3. Adım: Rsnapshot'ı Yapılandırma

Şimdi rsnapshot yapılandırma dosyasında bazı parametreleri düzenleyip eklemeniz gerekecek. rsnapshot.conf dosyasını vi veya nano düzenleyiciyle açın.

vi /etc/rsnapshot.conf

Daha sonra tüm yedeklemelerinizi saklamak istediğiniz bir yedekleme dizini oluşturun. Benim durumumda yedekleme dizini konumum “/data/backup/ ”. Yedekleme konumunu ayarlamak için aşağıdaki parametreyi arayın ve düzenleyin.

snapshot_root			 /data/backup/

Ayrıca SSH üzerinden uzaktan yedekleme alınmasına izin vermek için “cmd_ssh” satırının açıklamasını kaldırın. Satırın açıklamasını kaldırmak için aşağıdaki satırın önündeki "#" işaretini kaldırın; böylece rsnapshot, verilerinizi güvenli bir şekilde bir yedekleme sunucusuna aktarabilir.

cmd_ssh			/usr/bin/ssh

Daha sonra, kaç tane eski yedeği saklamak istediğinize karar vermeniz gerekir, çünkü rsnapshot'ın ne sıklıkta anlık görüntü almak istediğinize dair hiçbir fikri yoktu. Ne kadar veri kaydedileceğini, saklanacak aralıkların ekleneceğini ve her birinden kaç tane verinin kaydedileceğini belirtmeniz gerekir.

Varsayılan ayarlar yeterince iyi ancak yine de daha uzun vadeli yedeklemelere sahip olabilmeniz için "aylık" aralığını etkinleştirmenizi istiyorum. Lütfen bu bölümü aşağıdaki ayarlara benzer görünecek şekilde düzenleyin.

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Düzenlemeniz gereken bir şey daha “ssh_args” değişkenidir. Varsayılan SSH Bağlantı Noktası'nı (22) başka bir şeyle değiştirdiyseniz, uzak yedekleme sunucunuzun bağlantı noktası numarasını belirtmeniz gerekir.

ssh_args		-p 7851

Son olarak yedeklemek istediğiniz yerel ve uzak yedekleme dizinlerinizi ekleyin.

Yerel Dizinleri Yedekle

Dizinlerinizi yerel olarak aynı makineye yedeklemeye karar verdiyseniz, yedekleme girişi şu şekilde görünecektir. Örneğin /tecmint ve /etc dizinlerimin yedeğini alıyorum.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Uzak Dizinleri Yedekleme

Uzak sunucu dizinlerini yedeklemek istiyorsanız, rsnapshot'a sunucunun nerede olduğunu ve hangi dizinleri yedeklemek istediğinizi söylemeniz gerekir. Burada rsnapshot sunucusunda “/data/backup” dizini altında uzak sunucumdaki “/home” dizininin yedeğini alıyorum.

backup		 [email :/home/ 		/data/backup/

Ayrıca Okuyun:

  1. Rsync (Uzaktan Senkronizasyon) Aracını Kullanarak Dizinleri Yedekleme/Senkronize Etme
  2. SCP Komutunu Kullanarak Dosya/Klasör Aktarımı
Dosyaları ve Dizinleri Hariç Tut

Burada her şeyi hariç tutacağım ve ardından yalnızca neyi yedeklemek istediğimi özel olarak tanımlayacağım. Bunu yapmak için bir hariç tutma dosyası oluşturmanız gerekir.

vi /data/backup/tecmint.exclude

Öncelikle yedeklemek istediğiniz dizinlerin listesini alın ve diğer her şeyi hariç tutmak için ( – * ) ekleyin. Bu yalnızca dosyada listelediklerinizi yedekleyecektir. Hariç tutma dosyam aşağıdakine benzer.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

Dosyayı hariç tut seçeneğinin kullanılması, rsync özyinelemesinin kullanılması nedeniyle çok yanıltıcı olabilir. Yani yukarıdaki örneğim aradığınız şey olmayabilir. Daha sonra hariç tutma dosyasını rsnapshot.conf dosyasına ekleyin.

exclude_file    /data/backup/tecmint.exclude

Sonunda, ilk yapılandırmayı neredeyse tamamladınız. Devam etmeden önce “/etc/rsnapshot.conf” yapılandırma dosyasını kaydedin. Açıklanacak birçok seçenek var, ancak işte örnek yapılandırma dosyam.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

Yukarıdaki seçeneklerin tümü ve argüman açıklamaları aşağıdaki gibidir:

  1. config_version 1.2=Yapılandırma dosyası sürümü
  2. snapshot_root=Anlık görüntüleri depolamak için Yedekleme Hedefi
  3. cmd_cp=Komutun kopyalanacağı yol
  4. cmd_rm=Komutun kaldırılacağı yol
  5. cmd_rsync=rsync'e giden yol
  6. cmd_ssh=SSH Yolu
  7. cmd_logger=Sistem günlüğüne giden kabuk komut arayüzünün yolu
  8. cmd_du=Disk kullanım komutunun yolu
  9. interval hourly=Saatte kaç yedekleme tutulacağı.
  10. interval daily=Tutulacak günlük yedekleme sayısı.
  11. intervalweek=Kaç haftalık yedekleme tutulacağı.
  12. aylık aralık=Tutulacak aylık yedekleme sayısı.
  13. ssh_args=Farklı bir bağlantı noktası (-p) gibi isteğe bağlı SSH bağımsız değişkenleri
  14. ayrıntılı=Kendinden açıklamalı
  15. loglevel=Kendinden açıklamalı
  16. günlük dosyası=Günlük dosyasının yolu
  17. exclude_file=Hariç tutma dosyasının yolu (daha ayrıntılı olarak açıklanacaktır)
  18. rsync_long_args=rsync'e iletilecek uzun argümanlar
  19. lockfile=Açıklamalı
  20. yedekleme=Yedeklenecek şeyin tam yolu ve ardından göreceli yerleştirme yolu.

Adım 4: Rsnapshot Yapılandırmasını Doğrulayın

Tüm yapılandırmanızı tamamladıktan sonra her şeyin beklendiği gibi çalıştığını doğrulamanın zamanı geldi. Yapılandırmanızın doğru sözdizimine sahip olduğunu doğrulamak için aşağıdaki komutu çalıştırın.

rsnapshot configtest

Syntax OK

Her şey doğru yapılandırılırsa "Sözdizimi Tamam" mesajını alırsınız. Herhangi bir hata mesajı alırsanız bu, rsnapshot'u çalıştırmadan önce bu hataları düzeltmeniz gerektiği anlamına gelir.

Daha sonra, doğru sonuçları ürettiğimizden emin olmak için anlık görüntülerden birinde bir test çalıştırması yapın. -t (test) argümanını kullanarak bir test çalıştırması yapmak için "saatlik" parametresini alıyoruz. Aşağıdaki komut, gerçekte yapmadan yapacağı şeylerin ayrıntılı bir listesini görüntüleyecektir.

rsnapshot -t hourly
Örnek Çıktı
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Not: Yukarıdaki komut, rsnapshot'a "saatlik" bir yedekleme oluşturmasını söyler. Aslında onu gerçekten çalıştırdığımızda gerçekleştireceği komutların çıktısını alır.

Adım 5: Rsnapshot'ı Manuel Olarak Çalıştırma

Sonuçlarınızı doğruladıktan sonra komutu gerçekten çalıştırmak için “-t” seçeneğini kaldırabilirsiniz.

rsnapshot hourly

Yukarıdaki komut, yedekleme betiğini rsnapshot.conf dosyasına eklediğimiz tüm konfigürasyonlarla çalıştıracak ve bir “backup” dizini oluşturacak ve ardından onun altındaki dizin yapısını oluşturacaktır. bu dosyalarımızı düzenler. Yukarıdaki komutu çalıştırdıktan sonra yedekleme dizinine giderek sonuçları doğrulayabilir ve gösterildiği gibi ls -l komutunu kullanarak dizin yapısını listeleyebilirsiniz.

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Adım 6: Süreci Otomatikleştirme

Süreci otomatikleştirmek için rsnapshotCron'dan belirli aralıklarla çalıştırılacak şekilde planlamanız gerekir. Varsayılan olarak rsnapshot, "/etc/cron.d/rsnapshot" altında cron dosyasıyla birlikte gelir; yoksa bir tane oluşturun ve aşağıdaki satırları buna ekleyin.

Varsayılan olarak kurallar yorumlanır, dolayısıyla bu değerleri etkinleştirmek için planlama bölümünün önündeki “#” işaretini kaldırmanız gerekir.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

Yukarıdaki cron kurallarının ne işe yaradığını tam olarak açıklayayım:

  1. Her 4 saatte çalışır ve /backup dizini altında saatlik bir dizin oluşturur.
  2. Her gün 3:30'da çalışır ve /backup dizini altında günlük bir dizin oluşturur.
  3. Haftalık her Pazartesi günü 3:00'de çalışır ve /backup altında haftalık bir dizin oluşturur. güçlü> dizin.
  4. Her ayda 2:30'da çalışır ve /backup dizini altında aylık bir dizin oluşturur.

Cron kurallarının nasıl çalıştığını daha iyi anlamak için konuyu anlatan makalemizi okumanızı öneririm.

  1. 11 Cron Planlama Örneği

Adım 7: Anlık Görüntü Raporları

RSnapshot, veri yedeklemeniz sırasında ne olduğuna ilişkin tüm ayrıntıları içeren bir e-posta uyarısı gönderen kullanışlı, küçük bir raporlama Perl komut dosyası sağlar. Bu betiği kurmak için betiği “/usr/local/bin” altında bir yere kopyalayıp çalıştırılabilir hale getirmeniz gerekir.

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

Daha sonra “rsnapshot.conf” dosyanızdaki “–stats” parametresini rsync'in uzun argümanlar bölümüne ekleyin.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Şimdi daha önce eklenen crontab kurallarını düzenleyin ve raporları belirtilen e-posta adresine iletmek için rsnapreport.pl komut dosyasını çağırın.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Yukarıdaki girişleri doğru bir şekilde ekledikten sonra e-posta adresinize aşağıdakine benzer bir rapor gelecektir.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Referans Bağlantıları

  1. anlık görüntü ana sayfası

Şimdilik bu kadar, kurulum sırasında herhangi bir sorun olursa bana yorum bırakın. O zamana kadar Açık kaynak dünyası hakkında daha ilginç makaleler için TecMint'i takip etmeye devam edin.