Wyszukiwanie w witrynie

Rsnapshot (oparty na Rsync) - narzędzie do tworzenia lokalnych/zdalnych kopii zapasowych systemu plików dla systemu Linux


rsnapshot to narzędzie typu open source do lokalnego/zdalnego tworzenia kopii zapasowych systemu plików, napisane w języku Perl, które wykorzystuje moc < programRsync i SSH do tworzenia zaplanowanych przyrostowych kopii zapasowych systemów plików Linux/Unix, zajmując jedynie miejsce jedna pełna kopia zapasowa plus różnice i przechowuj te kopie zapasowe na lokalnym dysku na innym dysku twardym lub zewnętrznej pamięci USB , dysk zamontowany w systemie NFS lub po prostu przez sieć do innej maszyny za pośrednictwem SSH.

W tym artykule pokazano, jak zainstalować, skonfigurować i używać rsnapshot do tworzenia przyrostowych plików co godzinę, codziennie, co tydzień i co tydzieńmiesięczne lokalne kopie zapasowe, a także zdalne kopie zapasowe. Aby wykonać wszystkie kroki opisane w tym artykule, musisz być użytkownikiem root.

Krok 1: Instalacja kopii zapasowej Rsnapshot w systemie Linux

Instalacja rsnapshot przy użyciu Yum i APT może się nieznacznie różnić, jeśli używasz Red Hat i Dystrybucje oparte na Debianie.

W RHEL/CentOS

Najpierw musisz zainstalować i włączyć repozytorium innej firmy o nazwie EPEL. Kliknij poniższy link, aby zainstalować i włączyć w systemach RHEL/CentOS. Użytkownicy Fedory nie potrzebują żadnych specjalnych konfiguracji repozytorium.

  1. Zainstaluj i włącz repozytorium EPEL w RHEL/CentOS 6/5/4

Po skonfigurowaniu zainstaluj rsnapshot z wiersza poleceń, jak pokazano.

yum install rsnapshot
Na Debianie/Ubuntu/Linux Mint

Domyślnie rsnapshot znajduje się w repozytoriach Ubuntu, więc możesz go zainstalować za pomocą polecenia apt-get, jak pokazano.

apt-get install rsnapshot

Krok 2: Konfigurowanie logowania SSH bez hasła

Aby wykonać kopię zapasową zdalnych serwerów Linux, Twój serwer kopii zapasowych rsnapshot będzie mógł łączyć się przez SSH bez hasła. Aby to osiągnąć, musisz utworzyć klucze publiczne i prywatne SSH w celu uwierzytelnienia na serwerze rsnapshot. Kliknij poniższy link, aby wygenerować klucze publiczne i prywatne na serwerze kopii zapasowych rsnapshot.

  1. Utwórz logowanie SSH bez hasła za pomocą SSH Keygen

Krok 3: Konfiguracja Rsnapshot

Teraz będziesz musiał edytować i dodać kilka parametrów do pliku konfiguracyjnego rsnapshot. Otwórz plik rsnapshot.conf za pomocą edytora vi lub nano.

vi /etc/rsnapshot.conf

Następnie utwórz katalog kopii zapasowych, w którym chcesz przechowywać wszystkie kopie zapasowe. W moim przypadku lokalizacja mojego katalogu kopii zapasowych to „/data/backup/”. Wyszukaj i edytuj następujący parametr, aby ustawić lokalizację kopii zapasowej.

snapshot_root			 /data/backup/

Odkomentuj także linię „cmd_ssh”, aby umożliwić wykonywanie zdalnych kopii zapasowych przez SSH. Aby odkomentować linię, usuń „#” przed następną linią, aby rsnapshot mógł bezpiecznie przesłać Twoje dane na serwer kopii zapasowych.

cmd_ssh			/usr/bin/ssh

Następnie musisz zdecydować, ile starych kopii zapasowych chcesz zachować, ponieważ rsnapshot nie miał pojęcia, jak często chcesz robić migawki. Musisz określić, ile danych ma zostać zapisanych, dodać interwały do zachowania i ich liczbę.

Cóż, ustawienia domyślne są wystarczająco dobre, ale nadal chciałbym, abyś włączył interwał „comiesięczny”, abyś mógł mieć również długoterminowe kopie zapasowe. Edytuj tę sekcję, aby wyglądała podobnie do poniższych ustawień.

#########################################
          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

Jeszcze jedną rzeczą, którą musisz edytować, jest zmienna „ssh_args”. Jeśli zmieniłeś domyślny Port SSH (22) na inny, musisz określić numer portu zdalnego serwera kopii zapasowych.

ssh_args		-p 7851

Na koniec dodaj lokalne i zdalne katalogi kopii zapasowych, dla których chcesz utworzyć kopię zapasową.

Utwórz kopię zapasową katalogów lokalnych

Jeśli zdecydowałeś się na utworzenie kopii zapasowej katalogów lokalnie na tym samym komputerze, wpis kopii zapasowej będzie wyglądał następująco. Na przykład tworzę kopię zapasową moich katalogów /tecmint i /etc.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Utwórz kopię zapasową zdalnych katalogów

Jeśli chcesz utworzyć kopię zapasową katalogów zdalnego serwera, musisz poinformować rsnapshot, gdzie znajduje się serwer i które katalogi chcesz wykonać kopię zapasową. Tutaj wykonuję kopię zapasową katalogu „/home” mojego zdalnego serwera w katalogu „/data/backup” na serwerze rsnapshot.

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

Przeczytaj także:

  1. Jak tworzyć kopie zapasowe/synchronizować katalogi za pomocą narzędzia Rsync (zdalna synchronizacja).
  2. Jak przesyłać pliki/foldery za pomocą polecenia SCP
Wyklucz pliki i katalogi

W tym miejscu wykluczę wszystko, a następnie określę tylko szczegółowo, co chcę wykonać w kopii zapasowej. Aby to zrobić, musisz utworzyć plik wykluczeń.

vi /data/backup/tecmint.exclude

Najpierw uzyskaj listę katalogów, dla których chcesz utworzyć kopię zapasową, i dodaj ( – * ), aby wykluczyć wszystko inne. Spowoduje to wykonanie kopii zapasowej tylko tego, co wymieniłeś w pliku. Mój plik wykluczeń wygląda podobnie do poniższego.

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

Użycie opcji wykluczenia pliku może być bardzo trudne ze względu na użycie rekurencji rsync. Zatem mój powyższy przykład może nie być tym, czego szukasz. Następnie dodaj plik wykluczeń do pliku rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Wreszcie, konfiguracja wstępna jest już prawie ukończona. Zapisz plik konfiguracyjny „/etc/rsnapshot.conf” przed przejściem dalej. Istnieje wiele opcji do wyjaśnienia, ale oto mój przykładowy plik konfiguracyjny.

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/

Wszystkie powyższe opcje i wyjaśnienia argumentów są następujące:

  1. config_version 1.2=Wersja pliku konfiguracyjnego
  2. snapshot_root=Miejsce docelowe kopii zapasowej do przechowywania migawek
  3. cmd_cp=Ścieżka do polecenia kopiowania
  4. cmd_rm=Ścieżka do usunięcia polecenia
  5. cmd_rsync=Ścieżka do rsync
  6. cmd_ssh=Ścieżka do SSH
  7. cmd_logger=Ścieżka do interfejsu poleceń powłoki do syslog
  8. cmd_du=Polecenie ścieżki do użycia dysku
  9. interwał godzinowy=ile godzinnych kopii zapasowych należy przechowywać.
  10. interwał dzienny=liczba codziennych kopii zapasowych, które należy przechowywać.
  11. interwał tygodniowy=liczba cotygodniowych kopii zapasowych, które należy przechowywać.
  12. interwał miesięczny=liczba miesięcznych kopii zapasowych, które należy przechowywać.
  13. ssh_args=Opcjonalne argumenty SSH, takie jak inny port (-p)
  14. pełne=oczywiste
  15. loglevel=Oczywiste
  16. logfile=Ścieżka do pliku dziennika
  17. exclude_file=Ścieżka do pliku wykluczeń (zostanie wyjaśnione bardziej szczegółowo)
  18. rsync_long_args=Długie argumenty do przekazania do rsync
  19. plik blokujący=Oczywiste
  20. kopia zapasowa=pełna ścieżka do elementu, którego kopia zapasowa ma zostać utworzona, po której następuje względna ścieżka umieszczenia.

Krok 4: Sprawdź konfigurację Rsnapshot

Po zakończeniu całej konfiguracji nadszedł czas, aby sprawdzić, czy wszystko działa zgodnie z oczekiwaniami. Uruchom następujące polecenie, aby sprawdzić, czy konfiguracja ma poprawną składnię.

rsnapshot configtest

Syntax OK

Jeśli wszystko zostało poprawnie skonfigurowane, pojawi się komunikat „Składnia OK”. Jeśli zobaczysz komunikat o błędach, oznacza to, że musisz je poprawić przed uruchomieniem rsnapshot.

Następnie wykonaj uruchomienie testowe na jednej z migawek, aby upewnić się, że generujemy prawidłowe wyniki. Bierzemy parametr „co godzinę”, aby wykonać uruchomienie testowe przy użyciu argumentu -t (test). Poniższe polecenie wyświetli pełną listę rzeczy, które zrobi, bez faktycznego ich wykonywania.

rsnapshot -t hourly
Przykładowe wyjście
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/

Uwaga: powyższe polecenie nakazuje rsnapshot utworzenie kopii zapasowej „co godzinę”. W rzeczywistości wypisuje polecenia, które wykona, gdy naprawdę je wykonamy.

Krok 5: Ręczne uruchomienie Rsnapshot

Po zweryfikowaniu wyników możesz usunąć opcję „-t”, aby naprawdę uruchomić polecenie.

rsnapshot hourly

Powyższe polecenie uruchomi skrypt kopii zapasowej z całą konfiguracją, którą dodaliśmy w pliku rsnapshot.conf i utworzy katalog „backup”, a następnie utworzy pod nim strukturę katalogów który porządkuje nasze pliki. Po uruchomieniu powyższego polecenia możesz sprawdzić wyniki, przechodząc do katalogu kopii zapasowej i wyświetlając strukturę katalogów za pomocą polecenia ls -l, jak pokazano.

cd /data/backup
ls -l

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

Krok 6: Automatyzacja procesu

Aby zautomatyzować proces, musisz zaplanować uruchamianie rsnapshot w określonych odstępach czasu z Cron. Domyślnie rsnapshot jest dostarczany z plikiem cron w lokalizacji „/etc/cron.d/rsnapshot”, jeśli nie istnieje, utwórz go i dodaj do niego następujące linie.

Domyślnie reguły są komentowane, dlatego aby włączyć te wartości, należy usunąć „#” z przodu sekcji planowania.

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

Pozwólcie, że wyjaśnię dokładnie, co robią powyższe reguły cron:

  1. Uruchamia się co 4 godziny i tworzy katalog co godzinę w katalogu /backup.
  2. Uruchamia się codziennie o 3:30 i tworzy katalog codziennie w katalogu /backup.
  3. Uruchamia się co tydzień w każdy poniedziałek o 3:00 i tworzy katalog co tydzień w /backup silny> katalog.
  4. Uruchamia się co co miesiąc o 2:30 i tworzy katalog co miesiąc w katalogu /backup.

Aby lepiej zrozumieć, jak działają reguły cron, sugeruję przeczytanie naszego artykułu, który je opisuje.

  1. 11 przykładów planowania Cron

Krok 7: Raporty Rsnapshot

rsnapshot udostępnia sprytny, mały skrypt Perla do raportowania, który wysyła powiadomienie e-mailem ze wszystkimi szczegółami dotyczącymi tego, co wydarzyło się podczas tworzenia kopii zapasowej danych. Aby skonfigurować ten skrypt, musisz skopiować go gdzieś pod „/usr/local/bin” i uczynić go wykonywalnym.

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

Następnie dodaj parametr „–stats” w pliku „rsnapshot.conf” do sekcji długich argumentów rsync.

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

Teraz edytuj dodane wcześniej reguły crontab i wywołaj skrypt rsnapreport.pl, aby przekazać raporty na podany adres e-mail.

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 

Po poprawnym dodaniu powyższych wpisów, otrzymasz na swój adres e-mail raport podobny do poniższego.

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

Linki referencyjne

  1. strona główna rsnapshota

To wszystko na razie. Jeśli podczas instalacji wystąpią jakiekolwiek problemy, zostaw komentarz. Do tego czasu zaglądaj do TecMint, gdzie znajdziesz więcej interesujących artykułów na temat świata Open Source.