Rsnapshot (Rsync-basert) - Et lokalt/eksternt sikkerhetskopieringsverktøy for filsystem for Linux


rsnapshot er et sikkerhetskopieringsverktøy for lokalt/eksternt filsystem med åpen kildekode ble skrevet på Perl-språket som utnytter kraften til Rsync og SSH-program for å lage, planlagte inkrementelle sikkerhetskopier av Linux/Unix-filsystemer, mens det bare tar opp plassen til én enkelt full sikkerhetskopi pluss forskjeller og hold disse sikkerhetskopiene på lokal stasjon til en annen harddisk, en ekstern USB-pinne, en NFS-montert stasjon eller ganske enkelt over nettverket til en annen maskin via SSH.

Denne artikkelen vil demonstrere hvordan du installerer, konfigurerer og bruker rsnapshot for å lage trinnvise lokale sikkerhetskopier hver time, daglig, ukentlig og månedlig, samt eksterne sikkerhetskopier. For å utføre alle trinnene i denne artikkelen, må du være root-bruker.

Trinn 1: Installere Rsnapshot Backup i Linux

Installasjon av rsnapshot ved hjelp av Yum og APT kan avvike litt hvis du bruker Red Hat og Debian-baserte distribusjoner.

Først må du installere og aktivere tredjeparts depot kalt EPEL. Følg linken nedenfor for å installere og aktivere under RHEL/CentOS-systemene dine. Fedora-brukere krever ingen spesielle depotkonfigurasjoner.

  1. Installer og aktiver EPEL Repository i RHEL/CentOS 6/5/4

Når du har satt opp ting, installer rsnapshot fra kommandolinjen som vist.

# yum install rsnapshot

Som standard er rsnapshot inkludert i Ubuntus depoter, slik at du kan installere det ved å bruke apt-get-kommandoen som vist.

# apt-get install rsnapshot

Trinn 2: Sette opp SSH-passordløs pålogging

For å sikkerhetskopiere eksterne Linux-servere, vil rsnapshot backup-serveren din kunne koble til via SSH uten passord. For å oppnå dette, må du opprette en SSH offentlige og private nøkler for å autentisere på rsnapshot-serveren. Vennligst følg lenken nedenfor for å generere en offentlig og privat nøkkel på rsnapshot backup-serveren.

  1. Opprett SSH-passordløs pålogging med SSH Keygen

Trinn 3: Konfigurering av Rsnapshot

Nå må du redigere og legge til noen parametere i rsnapshot-konfigurasjonsfilen. Åpne filen rsnapshot.conf med vi eller nano editor.

# vi /etc/rsnapshot.conf

Lag deretter en sikkerhetskopikatalog, der du vil lagre alle sikkerhetskopiene. I mitt tilfelle er min plassering for sikkerhetskopikatalogen \/data/backup/. Søk etter og rediger følgende parameter for å angi sikkerhetskopieringsplasseringen.

snapshot_root			 /data/backup/

Fjern også cmd_ssh-linjen for å tillate å ta eksterne sikkerhetskopier over SSH. For å fjerne kommentaren til linjen, fjern # foran den følgende linjen, slik at rsnapshot kan overføre dataene dine sikkert til en sikkerhetskopiserver.

cmd_ssh			/usr/bin/ssh

Deretter må du bestemme hvor mange gamle sikkerhetskopier du vil beholde, fordi rsnapshot ikke hadde noen anelse om hvor ofte du vil ta øyeblikksbilder. Du må spesifisere hvor mye data som skal lagres, legge til intervaller som skal beholdes og hvor mange av hver.

Vel, standardinnstillingene er gode nok, men likevel vil jeg at du aktiverer «månedlig» intervall slik at du også kan ha lengre sikkerhetskopier på plass. Rediger denne delen slik at den ligner på innstillingene nedenfor.

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

En annen ting du må redigere er variabelen ssh_args. Hvis du har endret standard SSH-port (22) til noe annet, må du spesifisere portnummeret til den eksterne sikkerhetskopieringsserveren.

ssh_args		-p 7851

Til slutt legger du til lokale og eksterne sikkerhetskopieringskataloger som du vil sikkerhetskopiere.

Hvis du har bestemt deg for å sikkerhetskopiere katalogene dine lokalt til samme maskin, vil sikkerhetskopioppføringen se slik ut. For eksempel tar jeg sikkerhetskopi av /tecmint- og /etc-katalogene mine.

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

Hvis du ønsker å ta backup av en ekstern serverkatalog, må du fortelle rsnapshot hvor serveren er og hvilke kataloger du vil sikkerhetskopiere. Her tar jeg en sikkerhetskopi av min eksterne server /home-katalog under /data/backup-katalogen på rsnapshot-serveren.

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

Les også:

  1. Hvordan sikkerhetskopiere/synkronisere kataloger ved hjelp av Rsync (Eksternsynkronisering)-verktøyet
  2. Hvordan overføre filer/mapper ved hjelp av SCP-kommando

Her skal jeg ekskludere alt, og deretter bare spesifikt definere hva jeg vil sikkerhetskopiere. For å gjøre dette må du opprette en ekskluderingsfil.

# vi /data/backup/tecmint.exclude

Få først listen over kataloger du vil sikkerhetskopiere og legg til ( – * ) for å ekskludere alt annet. Dette vil bare sikkerhetskopiere det du har oppført i filen. Ekskluderingsfilen min ser ut som nedenfor.

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

Å bruke ekskluderingsfilalternativet kan være veldig vanskelig på grunn av bruk av rsync-rekursjon. Så, eksemplet ovenfor er kanskje ikke det du ser etter. Deretter legger du til ekskluderingsfilen i filen rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Til slutt er du nesten ferdig med den første konfigurasjonen. Lagre /etc/rsnapshot.conf konfigurasjonsfilen før du går videre. Det er mange alternativer å forklare, men her er min eksempelkonfigurasjonsfil.

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/

Alle alternativene og argumentforklaringene ovenfor er som følger:

  1. config_version 1.2 = Konfigurasjonsfilversjon
  2. snapshot_root = Sikkerhetskopieringsdestinasjon for å lagre øyeblikksbilder
  3. cmd_cp = Bane til kopieringskommando
  4. cmd_rm = Bane for å fjerne kommandoen
  5. cmd_rsync = Bane til rsync
  6. cmd_ssh = Bane til SSH
  7. cmd_logger = Bane til shell-kommandogrensesnitt til syslog
  8. cmd_du = Bane til diskbrukskommando
  9. intervall per time = Hvor mange sikkerhetskopier per time som skal beholdes.
  10. intervall daglig = Hvor mange daglige sikkerhetskopier du skal beholde.
  11. intervall ukentlig = Hvor mange ukentlige sikkerhetskopier du skal beholde.
  12. intervall månedlig = Hvor mange månedlige sikkerhetskopier du skal beholde.
  13. ssh_args = Valgfrie SSH-argumenter, for eksempel en annen port (-p )
  14. verbose = Selvforklarende
  15. loglevel = Selvforklarende
  16. logfile = Bane til loggfil
  17. exclude_file = Bane til ekskluderingsfilen (vil bli forklart mer detaljert)
  18. rsync_long_args = Lange argumenter som skal sendes til rsync
  19. lockfile = Selvforklarende
  20. backup = Full bane til det som skal sikkerhetskopieres etterfulgt av relativ bane for plassering.

Trinn 4: Bekreft Rsnapshot-konfigurasjonen

Når du har fullført hele konfigurasjonen, er det på tide å bekrefte at alt fungerer som forventet. Kjør følgende kommando for å bekrefte at konfigurasjonen din har riktig syntaks.

# rsnapshot configtest

Syntax OK

Hvis alt er konfigurert riktig, vil du motta en \Syntax OK-melding. Hvis du får noen feilmeldinger, betyr det at du må rette opp disse feilene før du kjører rsnapshot.

Deretter gjør du en testkjøring på et av øyeblikksbildene for å sikre at vi genererer riktige resultater. Vi tar parameteren timelig for å utføre en testkjøring med -t (test) argument. Denne kommandoen nedenfor vil vise en detaljert liste over tingene den vil gjøre, uten å faktisk gjøre dem.

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

Merk: Kommandoen ovenfor forteller rsnapshot å lage en timelig sikkerhetskopi. Den skriver faktisk ut kommandoene den vil utføre når vi virkelig utfører den.

Trinn 5: Kjøre Rsnapshot manuelt

Etter å ha verifisert resultatene dine, kan du fjerne \-t-alternativet for å kjøre kommandoen virkelig.

# rsnapshot hourly

Kommandoen ovenfor vil kjøre sikkerhetskopieringsskriptet med all konfigurasjonen som vi la til i rsnapshot.conf-filen og oppretter en backup-katalog og deretter oppretter katalogstrukturen under den som organiserer filene våre. Etter å ha kjørt kommandoen ovenfor, kan du bekrefte resultatene ved å gå til sikkerhetskopikatalogen og liste opp katalogstrukturen ved å bruke ls -l kommandoen som vist.

# cd /data/backup
# ls -l

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

Trinn 6: Automatisering av prosessen

For å automatisere prosessen, må du planlegge at rsnapshot skal kjøres med visse intervaller fra Cron. Som standard kommer rsnapshot med cron-fil under /etc/cron.d/rsnapshot, hvis den ikke eksisterer, lag en og legg til følgende linjer til den.

Som standard kommenteres regler, så du må fjerne \# foran planleggingsdelen for å aktivere disse verdiene.

# 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

La meg forklare nøyaktig hva cron-reglene ovenfor gjør:

  1. Kjøres hver 4. time og oppretter en timekatalog under /backup-katalogen.
  2. Kjøres daglig kl. 03.30 og lag en daglig katalog under /backup directory.
  3. Kjøres ukentlig hver mandag kl. 03.00 og lag en ukentlig katalog under /backup directory.
  4. Kjøres hver måned klokken 02:30 og lag en månedlig katalog under /backup directory.

For bedre å forstå hvordan cron-regler fungerer, foreslår jeg at du leser artikkelen vår som beskriver.

  1. 11 eksempler på Cron-planlegging

Trinn 7: Rsnapshot-rapporter

rsnapshotet gir et pent lite rapporterende Perl-skript som sender deg et e-postvarsel med alle detaljer om hva som skjedde under sikkerhetskopieringen av data. For å sette opp dette skriptet, må du kopiere skriptet et sted under /usr/local/bin og gjøre det kjørbart.

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

Deretter legger du til «–stats»-parameteren i «rsnapshot.conf»-filen til rsyncs lange argumentseksjon.

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

Rediger nå crontab-reglene som ble lagt til tidligere og ring rsnapreport.pl-skriptet for å sende rapportene til spesifisert e-postadresse.

# 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 

Når du har lagt til oppføringene ovenfor på riktig måte, vil du få en rapport til din e-postadresse som ligner på nedenfor.

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

Referanselenker

  1. rsnapshot-hjemmesiden

Det er det for nå, hvis det oppstår problemer under installasjonen, send meg en kommentar. Inntil da følg med på TecMint for flere interessante artikler om åpen kildekode-verden.