Rsnapshot (Rsync-baseret) - Et lokalt/eksternt system til sikkerhedskopiering af filsystem til Linux


rsnapshot er et open source lokalt/eksternt filsystem sikkerhedskopieringsværktøj blev skrevet på Perl-sprog, der udnytter styrken ved Rsync og SSH-programmet til at oprette, planlagte trinvise sikkerhedskopier af Linux/Unix-filsystemer, mens kun optager plads til en enkelt fuld sikkerhedskopi plus forskelle og hold disse sikkerhedskopier på det lokale drev til en anden harddisk, en ekstern USB-nøgle, et NFS-monteret drev eller blot over netværket til en anden maskine via SSH.

Denne artikel vil demonstrere, hvordan du installerer, opsætter og bruger rsnapshot til at oprette inkrementelle timebaserede, daglige, ugentlige og månedlige lokale sikkerhedskopier samt eksterne sikkerhedskopier. For at udføre alle trin i denne artikel skal du være rootbruger.

Trin 1: Installation af Rsnapshot Backup i Linux

Installation af rsnapshot ved hjælp af Yum og APT kan variere lidt, hvis du bruger Red Hat og Debian-baserede distributioner.

Først skal du installere og aktivere tredjeparts arkiv kaldet EPEL. Følg nedenstående link for at installere og aktivere under dine RHEL/CentOS-systemer. Fedora-brugere kræver ikke nogen specielle arkivkonfigurationer.

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

Når du har konfigureret ting, skal du installere rsnapshot fra kommandolinjen som vist.

# yum install rsnapshot

Som standard inkluderet rsnapshot i Ubuntus arkiver, så du kan installere det ved hjælp af apt-get-kommandoen som vist.

# apt-get install rsnapshot

Trin 2: Opsætning af SSH-adgangskodeløst login

For at sikkerhedskopiere eksterne Linux-servere kan din rsnapshot-backupserver oprette forbindelse via SSH uden adgangskode. For at opnå dette skal du oprette en SSH offentlig og privat nøgle for at godkende på rsnapshot-serveren. Følg nedenstående link for at generere en offentlig og privat nøgle på din rsnapshot backup-server.

  1. Opret SSH-adgangskodeløst login ved hjælp af SSH Keygen

Trin 3: Konfiguration af Rsnapshot

Nu bliver du nødt til at redigere og tilføje nogle parametre til rsnapshot-konfigurationsfilen. Åbn rsnapshot.conf-filen med vi eller nano-editor.

# vi /etc/rsnapshot.conf

Opret derefter en sikkerhedskopimappe, hvor du vil gemme alle dine sikkerhedskopier. I mit tilfælde er min backup-katalogplacering “/ data/backup /”. Søg efter og rediger følgende parameter for at indstille sikkerhedskopieringsplaceringen.

snapshot_root			 /data/backup/

Fjern også kommentar til "cmd_ssh" -linjen for at tillade at tage eksterne sikkerhedskopier over SSH. For at fjerne kommentar fra linjen skal du fjerne “#” foran den følgende linje, så rsnapshot sikkert kan overføre dine data til en backup-server.

cmd_ssh			/usr/bin/ssh

Dernæst skal du beslutte, hvor mange gamle sikkerhedskopier du vil beholde, fordi rsnapshot havde ingen idé om, hvor ofte du vil tage snapshots. Du skal angive, hvor meget data der skal gemmes, tilføje intervaller, der skal gemmes, og hvor mange af hver.

Standardindstillingerne er godt nok, men jeg vil stadig gerne have, at du aktiverer "månedligt" interval, så du også kan have sikkerhedskopier på længere sigt. Rediger dette afsnit for at ligne nedenstående indstillinger.

#########################################
#           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 ting mere, du skal redigere, er variablen "ssh_args". Hvis du har ændret standard SSH-port (22) til noget andet, skal du angive det portnummer på din eksterne sikkerhedskopieringsserver.

ssh_args		-p 7851

Endelig tilføj dine lokale og eksterne sikkerhedskopieringsmapper, som du vil sikkerhedskopiere.

Hvis du har besluttet at tage backup af dine mapper lokalt til den samme maskine, ser sikkerhedskopien ud som denne. For eksempel tager jeg sikkerhedskopi af mine/tecmint og/etc mapper.

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

Hvis du vil sikkerhedskopiere en ekstern serverkatalog, skal du fortælle rsnapshot, hvor serveren er, og hvilke kataloger du vil sikkerhedskopiere. Her tager jeg en sikkerhedskopi af min eksterne server “/ home” -mappe under “/ data/backup” -mappen på rsnapshot-serveren.

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

Læs også:

  1. Sådan sikkerhedskopieres/synkroniseres mapper ved hjælp af Rsync (Remote Sync) Tool
  2. Sådan overføres filer/mapper ved hjælp af SCP-kommando

Her vil jeg ekskludere alt og derefter kun specifikt definere, hvad jeg vil sikkerhedskopiere. For at gøre dette skal du oprette en ekskluderingsfil.

# vi /data/backup/tecmint.exclude

Hent først listen over mapper, som du vil sikkerhedskopiere, og tilføj (- *) for at udelukke alt andet. Dette sikkerhedskopierer kun det, du har angivet i filen. Min ekskluderingsfil ligner nedenstående.

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

Brug af ekskluder filindstilling kan være meget vanskelig på grund af brug af rsync-rekursion. Så mit ovenstående eksempel er muligvis ikke det, du leder efter. Føj derefter ekskluderingsfilen til rsnapshot.conf-filen.

exclude_file    /data/backup/tecmint.exclude

Endelig er du næsten færdig med den oprindelige konfiguration. Gem konfigurationsfilen “/etc/rsnapshot.conf”, inden du går videre. Der er mange muligheder at forklare, men her er min eksempelkonfigurationsfil.

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 ovenstående muligheder og argumentforklaringer er som følger:

  1. config_version 1.2 = Konfigurationsfilversion
  2. snapshot_root = Backupdestination til lagring af snapshots
  3. cmd_cp = Sti til kopi-kommando
  4. cmd_rm = Sti til fjernelse af kommando
  5. cmd_rsync = Sti til rsync
  6. cmd_ssh = Sti til SSH
  7. cmd_logger = Sti til kommandogrænseflade til shell til syslog
  8. cmd_du = Sti til kommandoen til diskbrug
  9. interval time = Hvor mange sikkerhedskopier hver time, der skal gemmes.
  10. interval dagligt = Hvor mange daglige sikkerhedskopier, der skal gemmes.
  11. interval ugentligt = Hvor mange ugentlige sikkerhedskopier, der skal gemmes.
  12. interval månedligt = Hvor mange månedlige sikkerhedskopier, der skal gemmes.
  13. ssh_args = Valgfri SSH-argumenter, såsom en anden port (-p)
  14. detaljeret = Selvforklarende
  15. loglevel = Selvforklarende
  16. logfile = Sti til logfil
  17. exclude_file = Sti til ekskluderingsfilen (forklares mere detaljeret)
  18. rsync_long_args = Lange argumenter, der skal overføres til rsync
  19. lockfile = Selvforklarende
  20. backup = Fuld sti til hvad der skal sikkerhedskopieres efterfulgt af relativ sti til placering.

Trin 4: Bekræft Rsnapshot-konfiguration

Når du er færdig med al din konfiguration, er det tid til at kontrollere, at alt fungerer som forventet. Kør følgende kommando for at kontrollere, at din konfiguration har den korrekte syntaks.

# rsnapshot configtest

Syntax OK

Hvis alt er konfigureret korrekt, modtager du en “Syntaks OK” -meddelelse. Hvis du får nogen fejlmeddelelser, betyder det, at du skal rette disse fejl, før du kører rsnapshot.

Dernæst skal du prøve at køre et af øjebliksbillede for at sikre, at vi genererer korrekte resultater. Vi tager parameteren "time" for at udføre en testkørsel ved hjælp af -t (test) argument. Denne kommando nedenfor viser en detaljeret liste over de ting, den vil gøre uden faktisk at gø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/

Bemærk: Ovenstående kommando fortæller rsnapshot at oprette en "times" sikkerhedskopi. Det udskriver faktisk de kommandoer, som det vil udføre, når vi virkelig udfører det.

Trin 5: Kør Rsnapshot manuelt

Når du har verificeret dine resultater, kan du fjerne “-t” -muligheden for virkelig at køre kommandoen.

# rsnapshot hourly

Ovenstående kommando vil køre backup-scriptet med al den konfiguration, som vi tilføjede i rsnapshot.conf-filen, og opretter en "backup" -mappe og opretter derefter katalogstrukturen under den, der organiserer vores filer. Efter at have kørt over kommandoen, kan du kontrollere resultaterne ved at gå til sikkerhedskopimappen og liste bibliotekstrukturen ved hjælp af kommandoen ls -l som vist.

# cd /data/backup
# ls -l

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

Trin 6: Automatisering af processen

For at automatisere processen skal du planlægge, at rsnapshot skal køres med bestemte intervaller fra Cron. Som standard kommer rsnapshot med cron-fil under “/etc/cron.d/rsnapshot“, hvis den ikke findes, skal du oprette en og tilføje følgende linjer til den.

Som standard er regler kommenteret, så du skal fjerne “#” foran planlægningssektionen for at aktivere disse værdier.

# 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

Lad mig forklare nøjagtigt, hvad ovenstående cron regler gør:

  1. Kører hver 4. time og opretter en timeliste under/backup-biblioteket.
  2. Kører dagligt kl. 3:30 og opretter en daglig mappe under/backup-mappe.
  3. Kører ugentligt hver mandag kl. 3:00 og opretter en ugentlig mappe under/backup-mappe.
  4. Kører hver måned kl. 2.30 og opretter en månedlig mappe under/backup-mappe.

For bedre at forstå, hvordan cron-regler fungerer, foreslår jeg, at du læser vores artikel, der beskriver.

  1. 11 Kroneplanlægningseksempler

Trin 7: Rsnapshot-rapporter

Rsnapshot giver et pænt lille rapporterende Perl-script, der sender dig en e-mail-alarm med alle detaljerne om, hvad der skete under din sikkerhedskopiering af data. For at opsætte dette script skal du kopiere scriptet et eller andet sted under “/ usr/local/bin” og gøre det eksekverbart.

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

Dernæst tilføj "–stats" parameter i din "rsnapshot.conf" fil til rsync's lange argumenter sektion.

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

Rediger nu crontab-reglerne, der blev tilføjet tidligere, og ring til scriptet rsnapreport.pl for at videregive rapporterne til den angivne e-mail-adresse.

# 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 tilføjet ovenstående poster korrekt, får du en rapport til din e-mail-adresse, der svarer til nedenstående.

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

Reference Links

  1. rsnapshot-startside

Det er det for nu, hvis der opstår problemer under installationen, så send mig en kommentar. Indtil da hold dig opdateret med TecMint for mere interessante artikler om Open source-verdenen.