Rsnapshot (pamatojoties uz Rsync) - vietējā/attālā failu sistēmas dublēšanas utilīta Linux


rsnapshot ir atvērtā koda vietējās/attālās failu sistēmas dublēšanas utilīta, kas tika uzrakstīta Perl valodā, un tā izmantoja Rsync un SSH programmas spēku, lai izveidotu plānotus pakāpeniskus Linux/Unix failu sistēmu dublējumus, vienlaikus aizņemot tikai vienu pilnu dublējumu un atšķirības un saglabājiet šīs dublējumkopijas lokālajā diskā citā cietajā diskā, ārējā USB zibatmiņā, NFS piestiprinātā diskā vai vienkārši tīklā uz citu mašīnu, izmantojot SSH.

Šajā rakstā tiks parādīts, kā instalēt, iestatīt un izmantot rsnapshot, lai izveidotu papildu stundas, dienas, nedēļas un mēneša vietējās dublējumkopijas, kā arī attālās dublējumkopijas. Lai veiktu visas šī raksta darbības, jums ir jābūt root lietotājam.

1. darbība: Rsnapshot Backup instalēšana Linux

Rsnapshot instalēšana, izmantojot Yum un APT, var nedaudz atšķirties, ja izmantojat Red Hat un Debian balstītus izplatījumus.

Vispirms jums būs jāinstalē un jāiespējo trešās puses krātuve ar nosaukumu EPEL. Lūdzu, sekojiet zemāk esošajai saitei, lai instalētu un iespējotu RHEL/CentOS sistēmās. Fedora lietotājiem nav nepieciešamas īpašas krātuves konfigurācijas.

  1. Instalējiet un iespējojiet EPEL repozitoriju RHEL/CentOS 6/5/4

Kad esat iestatījis lietas, instalējiet rsnapshot no komandrindas, kā parādīts.

# yum install rsnapshot

Pēc noklusējuma rsnapshot ir iekļauts Ubuntu krātuvēs, tāpēc to varat instalēt, izmantojot komandu apt-get, kā parādīts.

# apt-get install rsnapshot

2. darbība: iestatiet pieteikšanos bez SSH paroles

Lai dublētu attālos Linux serverus, jūsu rsnapshot rezerves serveris varēs izveidot savienojumu, izmantojot SSH, bez paroles. Lai to paveiktu, jums būs jāizveido SSH publiskās un privātās atslēgas, lai autentificētos rsnapshot serverī. Lūdzu, sekojiet zemāk esošajai saitei, lai ģenerētu publiskās un privātās atslēgas savā rsnapshot dublējuma serverī.

  1. Izveidojiet SSH pieteikšanos bez paroles, izmantojot SSH Keygen

3. darbība: Rsnapshot konfigurēšana

Tagad jums būs jārediģē un jāpievieno daži parametri rsnapshot konfigurācijas failam. Atveriet failu rsnapshot.conf ar vi vai nano redaktoru.

# vi /etc/rsnapshot.conf

Pēc tam izveidojiet dublējuma direktoriju, kurā vēlaties saglabāt visus dublējumkopijas. Manā gadījumā mana rezerves direktorija atrašanās vieta ir “/ data/backup /”. Lai iestatītu dublējuma atrašanās vietu, meklējiet un rediģējiet šo parametru.

snapshot_root			 /data/backup/

Atzīmējiet arī rindiņu “cmd_ssh”, lai ļautu veikt attālinātas dublējumkopijas, izmantojot SSH. Lai komentētu rindu, noņemiet “#” nākamās rindas priekšā, lai rsnapshot varētu droši pārsūtīt jūsu datus uz rezerves serveri.

cmd_ssh			/usr/bin/ssh

Tālāk jums jāizlemj, cik veco dublējumu vēlaties saglabāt, jo rsnapshot nebija ne jausmas, cik bieži vēlaties veikt momentuzņēmumus. Jums jānorāda, cik daudz datu jāsaglabā, jāpievieno saglabājamie intervāli un cik no katra.

Nu, noklusējuma iestatījumi ir pietiekami labi, bet tomēr es vēlētos, lai jūs iespējotu “ikmēneša” intervālu, lai jūs varētu arī ievietot ilgāka laika dublējumus. Lūdzu, rediģējiet šo sadaļu, lai tā izskatās līdzīga tālāk norādītajiem iestatījumiem.

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

Vēl viena rediģējamā lieta ir mainīgais “ssh_args”. Ja noklusējuma SSH portu (22) esat mainījis uz kaut ko citu, jums jānorāda attālinātās dublēšanas servera porta numurs.

ssh_args		-p 7851

Visbeidzot, pievienojiet vietējos un attālās dublējuma direktorijus, kurus vēlaties dublēt.

Ja esat nolēmis dublēt direktorijus lokāli tajā pašā mašīnā, dublējuma ieraksts izskatīsies šādi. Piemēram, es veicu savu/tecmint un/utt direktoriju dublējumu.

backup		/tecmint/		localhost/
backup		/etc/			localhost/

Ja vēlaties dublēt attālā servera direktorijus, jums jāsaka rsnapshot, kur atrodas serveris un kurus direktorijus vēlaties dublēt. Šeit es veicu sava attālā servera “/ home” direktorija dublējumu direktorijā “/ data/backup” rsnapshot serverī.

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

Lasīt arī:

  1. Kā dublēt/sinhronizēt direktorijus, izmantojot Rsync (attālās sinhronizācijas) rīku
  2. Kā pārsūtīt failus/mapes, izmantojot komandu SCP

Šeit es izslēdzu visu un tad tikai konkrēti definēju, ko vēlos dublēt. Lai to izdarītu, jums jāizveido izslēgšanas fails.

# vi /data/backup/tecmint.exclude

Vispirms iegūstiet to direktoriju sarakstu, kurus vēlaties dublēt, un pievienojiet (- *), lai izslēgtu visu pārējo. Tas dublēs tikai to, ko norādījāt failā. Mans izslēgšanas fails izskatās līdzīgs zemāk redzamajam.

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

Opcijas izslēgt failu izmantošana var būt ļoti sarežģīta, jo tiek izmantota rsync rekursija. Tātad, mans iepriekš minētais piemērs var nebūt tas, ko meklējat. Pēc tam pievienojiet izslēgšanas failu failam rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Visbeidzot, jūs esat gandrīz pabeidzis sākotnējo konfigurāciju. Pirms pārvietošanās, saglabājiet konfigurācijas failu “/etc/rsnapshot.conf”. Ir daudz iespēju izskaidrot, bet šeit ir mans konfigurācijas faila paraugs.

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/

Visas iepriekš minētās iespējas un argumentu skaidrojumi ir šādi:

  1. config_version 1.2 = konfigurācijas faila versija
  2. snapshot_root = Rezerves galamērķis momentuzņēmumu glabāšanai
  3. cmd_cp = Komandas kopēšanas ceļš
  4. cmd_rm = Ceļš komandas noņemšanai
  5. cmd_rsync = Ceļš uz sinhronizāciju
  6. cmd_ssh = Ceļš uz SSH
  7. cmd_logger = Ceļš uz čaulu komandu interfeiss uz syslog
  8. cmd_du = Ceļš uz diska lietojumu
  9. interval hourly = Cik stundu dublējumkopiju saglabāt.
  10. intervāls katru dienu = cik ikdienas dublējumkopiju glabāt.
  11. intervāls nedēļā = cik iknedēļas dublējumu jāglabā.
  12. intervāls mēnesī = cik mēneša dublējumu glabāt.
  13. ssh_args = Neobligāti SSH argumenti, piemēram, cits ports (-p)
  14. verbose = Pašsaprotams
  15. loglevel = Pašsaprotams
  16. logfile = ceļš uz žurnāla failu
  17. izslēgt_fails = Ceļš uz izslēgšanas failu (tiks skaidrots sīkāk)
  18. rsync_long_args = Gari argumenti, kas jānodod rsync
  19. lockfile = Pašsaprotams
  20. backup = Pilns ceļš uz dublējamo, kam seko relatīvais izvietojuma ceļš.

4. darbība. Pārbaudiet Rsnapshot konfigurāciju

Kad esat pabeidzis visu konfigurāciju, ir pienācis laiks pārbaudīt, vai viss darbojas, kā paredzēts. Palaidiet šo komandu, lai pārbaudītu, vai konfigurācijā ir pareiza sintakse.

# rsnapshot configtest

Syntax OK

Ja viss ir pareizi konfigurēts, jūs saņemsit ziņojumu “Sintakse OK”. Ja tiek parādīti kādi kļūdu ziņojumi, tas nozīmē, ka pirms rsnapshot palaišanas šīs kļūdas ir jāizlabo.

Pēc tam veiciet testa braucienu vienā no momentuzņēmumiem, lai pārliecinātos, ka mēs ģenerējam pareizus rezultātus. Mēs veicam parametru “stundā”, lai veiktu testa braucienu, izmantojot -t (testa) argumentu. Šajā zemāk redzamajā komandā tiks parādīts daudzveidīgs saraksts ar lietām, ko tas darīs, tos faktiski nedarot.

# rsnapshot -t hourly
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/

Piezīme. Iepriekš minētā komanda liek rsnapshot izveidot “stundas” dublējumu. Tas faktiski izdrukā komandas, kuras tas izpildīs, kad mēs to patiešām izpildīsim.

5. solis: Manuāli palaist Rsnapshot

Pēc rezultātu pārbaudīšanas varat noņemt opciju “-t”, lai patiešām palaistu komandu.

# rsnapshot hourly

Iepriekš minētā komanda palaidīs dublējuma skriptu ar visu konfigurāciju, ko pievienojām failā rsnapshot.conf, izveidos direktoriju “backup” un pēc tam zem tā izveidos direktoriju struktūru, kas sakārto mūsu failus. Pēc komandas palaišanas jūs varat pārbaudīt rezultātus, dodoties uz dublējuma direktoriju, un direktoriju struktūru sarakstā izmantojiet komandu ls -l, kā parādīts.

# cd /data/backup
# ls -l

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

6. solis: procesa automatizēšana

Lai automatizētu procesu, jums jāplāno rsnapshot palaist noteiktos laika intervālos no Cron. Pēc noklusējuma rsnapshot nāk ar cron failu sadaļā “/etc/cron.d/rsnapshot”, ja tāda nav, izveidojiet to un pievienojiet tai šādas rindas.

Pēc noklusējuma kārtulas tiek komentētas, tāpēc, lai iespējotu šīs vērtības, plānošanas sadaļas priekšā ir jānoņem “#”.

# 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

Ļaujiet man precīzi paskaidrot, ko dara iepriekš minētie noteikumi:

  1. Darbojas ik pēc 4 stundām un izveido stundas direktoriju zem/rezerves direktorija.
  2. Darbojas katru dienu pulksten 3:30 un izveido ikdienas direktoriju zem/rezerves direktorija.
  3. Darbojas katru nedēļu katru pirmdienu pulksten 3:00 no rīta un izveidojiet iknedēļas direktoriju zem/rezerves direktorija.
  4. Darbojas katru mēnesi plkst. 2.30 un izveido ikmēneša direktoriju zem/rezerves direktorija.

Lai labāk saprastu, kā darbojas cron noteikumi, iesaku izlasīt mūsu rakstu, kurā aprakstīts.

  1. 11 piemēru plānošanas piemēri

7. darbība: Rsnapshot atskaites

Rsnapshot nodrošina izveicīgu nelielu atskaites Perl skriptu, kas nosūta jums e-pasta brīdinājumu ar visu informāciju par to, kas notika datu dublēšanas laikā. Lai iestatītu šo skriptu, skripts ir jākopē kaut kur zem “/ usr/local/bin” un jādara izpildāms.

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

Pēc tam pievienojiet parametru “–stats” failā “rsnapshot.conf” rsync garo argumentu sadaļā.

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

Tagad rediģējiet iepriekš pievienotos crontab noteikumus un izsauciet skriptu rsnapreport.pl, lai pārsūtītu pārskatus uz norādīto e-pasta adresi.

# 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 

Kad esat pareizi pievienojis iepriekš minētos ierakstus, jūs saņemsiet ziņojumu uz savu e-pasta adresi, kas līdzīgs zemāk norādītajam.

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

Atsauces saites

  1. rsnapshot sākumlapa

Tas ir viss, ja instalēšanas laikā rodas kādas problēmas, pametiet man komentāru. Līdz tam sekojiet līdzi TecMint, lai iegūtu interesantākus rakstus par atvērtā koda pasauli.