Rsnapshot (na osnovi Rsync) - pripomoček za varnostno kopiranje lokalnega/oddaljenega datotečnega sistema za Linux


rsnapshot je odprtokodni pripomoček za varnostno kopiranje lokalnega/oddaljenega datotečnega sistema, napisan v jeziku Perl, ki izkorišča moč programa Rsync in SSH za ustvarjanje načrtovanih postopnih varnostnih kopij datotečnih sistemov Linux/Unix, hkrati pa zavzema prostor ene same popolne varnostne kopije in razlike in te varnostne kopije hranite na lokalnem pogonu na drugem trdem disku, zunanjem USB ključu, pogonu, nameščenem na NFS, ali preprosto prek omrežja na drugo napravo prek SSH.

Ta članek bo prikazal, kako namestiti, nastaviti in uporabiti rsnapshot za ustvarjanje postopnih urnih, dnevnih, tedenskih in mesečnih lokalnih varnostnih kopij ter oddaljenih varnostnih kopij. Če želite izvesti vse korake v tem članku, morate biti root uporabnik.

1. korak: Namestitev varnostne kopije Rsnapshot v Linux

Namestitev rsnapshot z uporabo Yum in APT se lahko nekoliko razlikuje, če uporabljate distribucije na osnovi Red Hat in Debian.

Najprej boste morali namestiti in omogočiti repozitorij tretjih oseb, imenovan EPEL. Sledite spodnji povezavi, da namestite in omogočite v svojih sistemih RHEL/CentOS. Uporabniki Fedore ne zahtevajo nobenih posebnih konfiguracij skladišča.

  1. Namestite in omogočite repozitorij EPEL v RHEL/CentOS 6/5/4

Ko nastavite stvari, namestite rsnapshot iz ukazne vrstice, kot je prikazano.

# yum install rsnapshot

Privzeto je rsnapshot vključen v Ubuntujeve repozitorije, tako da ga lahko namestite z ukazom apt-get, kot je prikazano.

# apt-get install rsnapshot

2. korak: Nastavitev prijave za SSH brez gesla

Za varnostno kopiranje oddaljenih strežnikov Linux se bo vaš varnostni strežnik rsnapshot lahko povezal prek SSH brez gesla. Da bi to dosegli, boste morali ustvariti javni in zasebni ključ SSH za preverjanje pristnosti na strežniku rsnapshot. Sledite spodnji povezavi, da ustvarite javne in zasebne ključe na varnostnem strežniku rsnapshot.

  1. Ustvari SSH prijavo brez gesla s pomočjo SSH Keygen

3. korak: Konfiguriranje Rsnapshot

Zdaj boste morali urediti in dodati nekaj parametrov v konfiguracijsko datoteko rsnapshot. Odprite datoteko rsnapshot.conf z urejevalnikom vi ali nano.

# vi /etc/rsnapshot.conf

Nato ustvarite varnostno kopijo, v katero želite shraniti vse varnostne kopije. V mojem primeru je moja lokacija varnostnega kopiranja\"/ data/backup /". Poiščite in uredite naslednji parameter, da nastavite lokacijo varnostne kopije.

snapshot_root			 /data/backup/

Odpokličite tudi vrstico "cmd_ssh", da omogočite oddaljeno varnostno kopiranje prek SSH. Če želite razkomentirati vrstico, odstranite »#« pred naslednjo vrstico, da bo rsnapshot lahko varno prenesel vaše podatke na varnostni strežnik.

cmd_ssh			/usr/bin/ssh

Nato se morate odločiti, koliko starih varnostnih kopij želite obdržati, ker rsnapshot ni vedel, kako pogosto želite narediti posnetke. Določiti morate, koliko podatkov želite shraniti, dodati intervale, ki jih želite obdržati, in koliko posameznih.

No, privzete nastavitve so dovolj dobre, vendar vseeno bi rad, da omogočite\"mesečni" interval, da boste lahko imeli tudi dolgoročne varnostne kopije. Uredite ta razdelek, da bo videti podobno kot spodnje nastavitve.

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

Še nekaj, kar morate urediti, je spremenljivka “ssh_args”. Če ste privzeta vrata SSH (22) spremenili v kaj drugega, morate določiti številko vrat oddaljenega varnostnega kopiranja strežnika.

ssh_args		-p 7851

Na koncu dodajte svoj lokalni in oddaljeni imenik varnostnih kopij, ki jih želite varnostno kopirati.

Če ste se odločili, da svoje imenike varnostno kopirate na isti računalnik, bi bil vnos varnostne kopije videti tako. Na primer, vzamem varnostno kopijo svojih imenikov/tecmint in/etc.

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

Če želite varnostno kopirati imenike oddaljenega strežnika, morate rsnapshotu sporočiti, kje je strežnik in katere imenike želite varnostno kopirati. Tu vzamem varnostno kopijo imenika oddaljenega strežnika “/ home” v imeniku “/ data/backup” na strežniku rsnapshot.

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

Preberite tudi:

  1. Varnostno kopiranje/sinhronizacija imenikov z orodjem Rsync (Remote Sync)
  2. Kako prenesti datoteke/mape z uporabo ukaza SCP

Tukaj bom izključil vse in nato le natančno določil, kaj želim varnostno kopirati. Če želite to narediti, morate ustvariti datoteko za izključitev.

# vi /data/backup/tecmint.exclude

Najprej dobite seznam imenikov, ki jih želite varnostno kopirati, in dodajte (- *), da izključite vse ostalo. S tem boste varnostno kopirali samo tisto, kar ste navedli v datoteki. Moja datoteka za izključitev je podobna spodnji.

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

Uporaba možnosti izključi datoteko je lahko zelo zahtevna zaradi uporabe rsync rekurzije. Torej, moj zgornji primer morda ni tisto, kar iščete. Nato dodajte datoteko za izključitev v datoteko rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Končno ste z začetno konfiguracijo skoraj končali. Pred nadaljevanjem shranite konfiguracijsko datoteko “/etc/rsnapshot.conf”. Obstaja veliko možnosti za razlago, tukaj pa je moja vzorčna konfiguracijska datoteka.

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/

Vse zgornje možnosti in obrazložitve argumentov so naslednje:

  1. config_version 1.2 = Različica konfiguracijske datoteke
  2. snapshot_root = Varnostni cilj za shranjevanje posnetkov
  3. cmd_cp = Pot do ukaza za kopiranje
  4. cmd_rm = Pot do odstranitve ukaza
  5. cmd_rsync = Pot do rsync
  6. cmd_ssh = Pot do SSH
  7. cmd_logger = Pot do ukaznega vmesnika lupine do syslog
  8. cmd_du = Pot do ukaza za uporabo diska
  9. interval urno = Koliko urnih varnostnih kopij je treba obdržati.
  10. interval dnevno = Koliko dnevnih varnostnih kopij je treba obdržati.
  11. interval na teden = Koliko varnostnih kopij na teden je treba obdržati.
  12. interval mesečno = Koliko mesečnih varnostnih kopij je treba obdržati.
  13. ssh_args = Izbirni argumenti SSH, na primer druga vrata (-p)
  14. podrobno = samoumevno
  15. loglevel = samoumevno
  16. logfile = Pot do datoteke dnevnika
  17. exclude_file = Pot do datoteke za izključitev (podrobneje bo razloženo)
  18. rsync_long_args = Dolgi argumenti za posredovanje rsync
  19. lockfile = samoumevno
  20. varnostna kopija = Celotna pot do tistega, kar je treba varnostno kopirati, čemur sledi relativna pot umestitve.

4. korak: preverite konfiguracijo Rsnapshot

Ko končate z vsemi konfiguracijami, je čas, da preverite, ali vse deluje po pričakovanjih. Zaženite naslednji ukaz, da preverite, ali ima vaša konfiguracija pravilno sintakso.

# rsnapshot configtest

Syntax OK

Če je vse pravilno konfigurirano, boste prejeli sporočilo\"Sintaksa v redu". Če dobite sporočilo o napaki, to pomeni, da morate te napake popraviti, preden zaženete rsnapshot.

Nato poskusno zaženite enega od posnetkov in se prepričajte, da ustvarjamo pravilne rezultate. Parameter »urno« vzamemo za preizkus z uporabo argumenta -t (test). Ta spodnji ukaz bo prikazal podroben seznam stvari, ki jih bo počel, ne da bi jih dejansko počel.

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

Opomba: Zgornji ukaz rsnapshotu naredi, da ustvari "urno" varnostno kopijo. Pravzaprav natisne ukaze, ki jih bo izvedel, ko ga zares izvedemo.

5. korak: Ročno zaženite Rsnapshot

Po preverjanju rezultatov lahko odstranite možnost\"- t", da ukaz zares zaženete.

# rsnapshot hourly

Zgornji ukaz bo zagnal skript za varnostno kopiranje z vso konfiguracijo, ki smo jo dodali v datoteko rsnapshot.conf, in ustvaril imenik z varnostno kopijo, nato pa pod njim ustvaril strukturo imenikov, ki organizira naše datoteke. Po zagonu zgornjega ukaza lahko rezultate preverite tako, da odprete imenik varnostne kopije in s pomočjo ukaza ls -l navedete strukturo imenikov, kot je prikazano.

# cd /data/backup
# ls -l

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

6. korak: Avtomatizacija postopka

Če želite avtomatizirati postopek, morate načrtovati zagon rsnapshot v določenih intervalih iz Crona. Rsnapshot privzeto dobi datoteko cron pod »/etc/cron.d/rsnapshot«, če ne obstaja, jo ustvarite in ji dodajte naslednje vrstice.

Privzeto se komentirajo pravila, zato morate odstraniti\"#" pred odsekom za razporejanje, da omogočite te vrednosti.

# 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

Naj natančno razložim, kaj počnejo zgornja pravila cron:

  1. Zažene se vsake 4 ure in ustvari urni imenik pod/rezervni imenik.
  2. Zažene se vsak dan ob 3.30 in ustvari dnevni imenik pod/rezervni imenik.
  3. Zažene se vsak teden vsak ponedeljek ob 3:00 zjutraj in ustvari tedenski imenik pod/backup directory.
  4. Zažene se vsak mesec ob 2.30 in ustvari mesečni imenik pod/rezervni imenik.

Če želite bolje razumeti, kako delujejo pravila cron, predlagam, da preberete naš članek, ki opisuje.

  1. 11 primerov razporejanja kronov

7. korak: Poročila Rsnapshot

Rsnapshot ponuja čudovit majhen poročevalski skript Perl, ki vam pošlje e-poštno opozorilo z vsemi podrobnostmi o tem, kaj se je zgodilo med varnostnim kopiranjem podatkov. Če želite nastaviti ta skript, ga morate prekopirati nekam pod "/ usr/local/bin" in ga narediti izvedljiv.

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

Nato v datoteko rsnapshot.conf dodajte parameter – –stats v razdelek z dolgimi argumenti rsync.

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

Zdaj uredite pravila crontab, ki so bila dodana prej, in pokličite skript rsnapreport.pl, da pošljete poročila na določen e-poštni naslov.

# 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 

Ko pravilno dodate zgornje vnose, boste na svoj elektronski naslov dobili poročilo, podobno spodnjemu.

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

Referenčne povezave

  1. domača stran rsnapshot

Za zdaj je to to, če mi med namestitvijo pride do težav, mi pošljite komentar. Do takrat spremljajte TecMint za zanimivejše članke o odprtokodnem svetu.