„Rsnapshot“ (pagrįsta „Rsync“) – vietinė/nuotolinė failų sistemos atsarginių kopijų kūrimo priemonė, skirta „Linux“


rsnapshot yra atvirojo kodo vietinė/nuotolinė failų sistemos atsarginės kopijos programa, sukurta Perl kalba, kuri pranašesnė programaRsync ir SSH, skirta sukurti suplanuotas laipsniškas Linux/Unix failų sistemų atsargines kopijas, užimdamas tik vietą vieną visą atsarginę kopiją ir skirtumus ir laikykite šias atsargines kopijas vietiniame diske kitame kietajame diske, išoriniame USB atmintyje , NFS prijungtą diską arba tiesiog per tinklą į kitą įrenginį per SSH.

Šiame straipsnyje bus parodyta, kaip įdiegti, nustatyti ir naudoti rsnapshot, kad būtų galima sukurti laipsnišką valandinį, kasdienį, kas savaitę ir mėnesio vietines atsargines kopijas, taip pat nuotolines atsargines kopijas. Jei norite atlikti visus šiame straipsnyje nurodytus veiksmus, turite būti root naudotojas.

1 veiksmas: „Rsnapshot Backup“ diegimas sistemoje „Linux“.

rsnapshot diegimas naudojant Yum ir APT gali šiek tiek skirtis, jei naudojate Red Hat ir Debianpagrįsti platinimai.

RHEL/CentOS

Pirmiausia turėsite įdiegti ir įgalinti trečiosios šalies saugyklą, pavadintą EPEL. Spustelėkite toliau pateiktą nuorodą, kad įdiegtumėte ir įgalintumėte savo RHEL/CentOS sistemas. Fedora naudotojams nereikia jokių specialių saugyklos konfigūracijų.

  1. Įdiekite ir įgalinkite EPEL saugyklą RHEL/CentOS 6/5/4

Atlikę sąranką, įdiekite rsnapshot iš komandinės eilutės, kaip parodyta.

yum install rsnapshot
„Debian“/„Ubuntu“/„Linux Mint“.

Pagal numatytuosius nustatymus rsnapshot įtraukta į Ubuntu saugyklas, todėl galite ją įdiegti naudodami komandą apt-get, kaip parodyta.

apt-get install rsnapshot

2 veiksmas: SSH prisijungimo be slaptažodžio nustatymas

Norėdami sukurti atsarginę nuotolinių Linux serverių kopiją, rsnapshot atsarginės kopijos serveris galės prisijungti per SSH be slaptažodžio. Norėdami tai padaryti, turėsite sukurti SSH viešuosius ir privačius raktus, kad galėtumėte autentifikuoti rsnapshot serverį. Spustelėkite toliau pateiktą nuorodą, kad sugeneruotumėte viešuosius ir privačius raktus rsnapshot atsarginiame serveryje.

  1. Sukurkite SSH prisijungimą be slaptažodžio naudodami SSH Keygen

3 veiksmas: „Rsnapshot“ konfigūravimas

Dabar turėsite redaguoti ir pridėti kai kuriuos parametrus į rsnapshot konfigūracijos failą. Atidarykite rsnapshot.conf failą naudodami vi arba nano redaktorių.

vi /etc/rsnapshot.conf

Tada sukurkite atsarginių kopijų katalogą, kuriame norite saugoti visas atsargines kopijas. Mano atveju mano atsarginės kopijos katalogo vieta yra „/data/backup/ “. Ieškokite ir redaguokite šį parametrą, kad nustatytumėte atsarginės kopijos vietą.

snapshot_root			 /data/backup/

Taip pat panaikinkite eilutės „cmd_ssh“ komentarą, kad galėtumėte nuotoliniu būdu kurti atsargines kopijas per SSH. Norėdami panaikinti eilutės komentarą, pašalinkite „#“ prieš kitą eilutę, kad rsnapshot galėtų saugiai perkelti duomenis į atsarginį serverį.

cmd_ssh			/usr/bin/ssh

Tada turite nuspręsti, kiek senų atsarginių kopijų norite išsaugoti, nes rsnapshot nežinojo, kaip dažnai norite daryti momentines kopijas. Turite nurodyti, kiek duomenų norite išsaugoti, pridėti intervalus, kuriuos norite išsaugoti, ir kiek jų.

Na, numatytieji nustatymai yra pakankamai geri, bet vis tiek norėčiau, kad įjungtumėte „mėnesinį“ intervalą, kad galėtumėte turėti ir ilgalaikes atsargines kopijas. Redaguokite šią skiltį, kad ji atrodytų panašiai kaip toliau pateikiami nustatymai.

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

Dar vienas dalykas, kurį reikia redaguoti, yra „ssh_args“ kintamasis. Jei numatytąjį SSH prievadą (22) pakeitėte į kitą, turite nurodyti tą nuotolinio atsarginės kopijos serverio prievado numerį.

ssh_args		-p 7851

Galiausiai pridėkite vietinių ir nuotolinių atsarginių katalogų, kurių atsarginę kopiją norite sukurti.

Vietinių katalogų atsarginė kopija

Jei nusprendėte sukurti atsargines katalogų kopijas tame pačiame kompiuteryje, atsarginės kopijos įrašas atrodys taip. Pavyzdžiui, darau atsargines savo katalogų /tecmint ir /etc kopijas.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Nuotolinių katalogų atsarginė kopija

Jei norite sukurti atsarginę nuotolinio serverio katalogų kopiją, turite nurodyti rsnapshot, kur yra serveris ir kurių katalogų atsarginę kopiją norite sukurti. Kuriu savo nuotolinio serverio katalogo /home atsarginę kopiją, esančią rsnapshot serverio kataloge /data/backup.

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

Taip pat skaitykite:

  1. Kaip sukurti atsarginę kopiją/sinchronizuoti katalogus naudojant Rsync (nuotolinio sinchronizavimo) įrankį
  2. Kaip perkelti failus/aplankus naudojant SCP komandą
Išskirkite failus ir katalogus

Čia aš ketinu išskirti viską, o tada tik konkrečiai apibrėžti tai, ko noriu sukurti atsarginę kopiją. Norėdami tai padaryti, turite sukurti pašalinimo failą.

vi /data/backup/tecmint.exclude

Pirmiausia gaukite katalogų, kurių atsargines kopijas norite sukurti, sąrašą ir pridėkite ( – * ), kad neįtrauktumėte visų kitų. Tai padarys atsarginę kopiją tik to, ką nurodėte faile. Mano pašalinimo failas atrodo panašiai kaip toliau.

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

Naudoti parinktį Išskirti failą gali būti labai sudėtinga, nes naudojama rsync rekursija. Taigi, mano aukščiau pateiktas pavyzdys gali būti ne tai, ko ieškote. Tada pridėkite išskyrimo failą prie rsnapshot.conf failo.

exclude_file    /data/backup/tecmint.exclude

Galiausiai, jūs beveik baigėte pradinę konfigūraciją. Prieš tęsdami, išsaugokite konfigūracijos failą „/etc/rsnapshot.conf“. Yra daug paaiškinimų, bet čia yra mano konfigūracijos failo pavyzdys.

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/

Visos aukščiau pateiktos parinktys ir argumentų paaiškinimai yra tokie:

  1. config_version 1.2=konfigūracijos failo versija
  2. snapshot_root=atsarginės paskirties vieta momentinėms nuotraukoms saugoti
  3. cmd_cp=Kopijavimo komandos kelias
  4. cmd_rm=komandos pašalinimo kelias
  5. cmd_rsync=Kelias į rsync
  6. cmd_ssh=kelias į SSH
  7. cmd_logger=kelias į apvalkalo komandų sąsają į syslog
  8. cmd_du=Kelio į disko naudojimo komanda
  9. valandinis intervalas=kiek valandinių atsarginių kopijų reikia saugoti.
  10. intervalas kasdien=kiek atsarginių kopijų reikia saugoti kasdien.
  11. intervalas per savaitę=kiek atsarginių kopijų kas savaitę reikia pasilikti.
  12. intervalas per mėnesį=kiek atsarginių kopijų per mėnesį reikia saugoti.
  13. ssh_args=pasirenkami SSH argumentai, pvz., kitas prievadas (-p )
  14. verbose=savaime aišku
  15. loglevel=savaime aišku
  16. logfile=kelias į žurnalo failą
  17. exclude_file=kelias į išskyrimo failą (bus paaiškinta išsamiau)
  18. rsync_long_args=Ilgi argumentai, kuriuos reikia perduoti rsync
  19. užrakinimo failas=savaime aišku
  20. atsarginė kopija=visas kelias į atsarginę kopiją ir santykinis paskirties vietos kelias.

4 veiksmas: patikrinkite „Rsnapshot“ konfigūraciją

Atlikę visą konfigūraciją, laikas patikrinti, ar viskas veikia taip, kaip tikėtasi. Vykdykite šią komandą, kad patikrintumėte, ar jūsų konfigūracijos sintaksė yra tinkama.

rsnapshot configtest

Syntax OK

Jei viskas sukonfigūruota teisingai, gausite pranešimą „Sintaksė gerai“. Jei gaunate klaidų pranešimų, tai reiškia, kad prieš paleisdami rsnapshot turite jas ištaisyti.

Tada atlikite vienos iš momentinių nuotraukų bandomąjį paleidimą, kad įsitikintumėte, jog gauname teisingus rezultatus. Mes naudojame parametrą „hourly“, kad atliktume bandomąjį paleidimą naudodami argumentą -t (testas). Ši žemiau esanti komanda parodys išsamų sąrašą dalykų, kuriuos ji darys, iš tikrųjų jų neatlikdama.

rsnapshot -t hourly
Pavyzdžio išvestis
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/

Pastaba: aukščiau pateikta komanda nurodo rsnapshot sukurti valandinę atsarginę kopiją. Jis iš tikrųjų išspausdina komandas, kurias ji atliks, kai ją iš tikrųjų vykdysime.

5 veiksmas: paleiskite „Rsnapshot“ rankiniu būdu

Patikrinę rezultatus, galite pašalinti parinktį „-t“, kad komanda būtų paleista iš tikrųjų.

rsnapshot hourly

Aukščiau pateikta komanda paleis atsarginį scenarijų su visa konfigūracija, kurią įtraukėme į failą rsnapshot.conf, ir sukuria katalogą „atsarginė kopija“, o po to sukuria katalogo struktūrą. kuri tvarko mūsų failus. Paleidę aukščiau nurodytą komandą, galite patikrinti rezultatus eidami į atsarginės kopijos katalogą ir nurodydami katalogo struktūrą naudodami komandą ls -l, kaip parodyta.

cd /data/backup
ls -l

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

6 veiksmas: automatizuokite procesą

Norėdami automatizuoti procesą, turite suplanuoti rsnapshot, kad jis būtų vykdomas tam tikrais intervalais iš Cron. Pagal numatytuosius nustatymus rsnapshot pateikiamas su cron failu, esančiu „/etc/cron.d/rsnapshot“, jei jo nėra, sukurkite jį ir pridėkite prie jo šias eilutes.

Pagal numatytuosius nustatymus taisyklės komentuojamos, todėl turite pašalinti „#“ iš prieš planavimo skiltį, kad įgalintumėte šias vertes.

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

Leiskite man tiksliai paaiškinti, ką daro aukščiau pateiktos cron taisyklės:

  1. Vykdoma kas 4 valandas ir kataloge /backup sukuriamas valandinis katalogas.
  2. Veikia kasdien 3:30 ir kataloge /backup sukurkite kasdienį katalogą.
  3. Veikia kas savaitę kiekvieną pirmadienį 3:00 val. ir sukuria savaitinį katalogą /backup katalogas.
  4. Veikia kas kas mėnesį 2:30 val. ir kataloge /backup sukuriamas mėnesinis katalogas.

Norėdami geriau suprasti, kaip veikia cron taisyklės, siūlau perskaityti mūsų straipsnį, kuriame aprašoma.

  1. 11 Cron planavimo pavyzdžių

7 veiksmas: momentinės nuotraukos ataskaitos

Snapshot pateikiamas puikus mažas ataskaitų teikimo Perl scenarijus, kuris siunčia jums el. pašto įspėjimą su visa informacija apie tai, kas įvyko kuriant atsarginę duomenų kopiją. Norėdami nustatyti šį scenarijų, turite nukopijuoti scenarijų kažkur į „/usr/local/bin“ ir padaryti jį vykdomąjį.

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

Tada pridėkite parametrą „–stats“ faile „rsnapshot.conf“ prie ilgų rsync argumentų skilties.

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

Dabar redaguokite crontab taisykles, kurios buvo pridėtos anksčiau, ir iškvieskite scenarijų rsnapreport.pl, kad ataskaitos būtų perduotos nurodytu el. pašto adresu.

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 

Teisingai įtraukę aukščiau esančius įrašus, savo el. pašto adresu gausite ataskaitą, panašią į toliau pateiktą.

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

Nuorodų nuorodos

  1. rsnapshot pagrindinis puslapis

Tai kol kas, jei diegiant iškyla kokių nors problemų, parašykite man komentarą. Iki tol sekite TecMint, kur rasite daugiau įdomių straipsnių apie atvirojo kodo pasaulį.