Rsnapshot (basat en Rsync): una utilitat de còpia de seguretat del sistema de fitxers local/remot per a Linux


rsnapshot és una utilitat de còpia de seguretat del sistema de fitxers local/remot de codi obert que es va escriure en llenguatge Perl que aprofita la potència del programa Rsync i SSH per crear còpies de seguretat incrementals programades dels sistemes de fitxers Linux/Unix, alhora que només ocupa l'espai d'una còpia de seguretat completa més diferències. i mantingueu aquestes còpies de seguretat a la unitat local a un disc dur diferent, un llapis USB extern, una unitat muntada NFS o simplement a través de la xarxa a una altra màquina mitjançant SSH.

Aquest article mostrarà com instal·lar, configurar i utilitzar rsnapshot per crear còpies de seguretat locals incrementals cada hora, diària, setmanal i mensual, així com còpies de seguretat remotes. Per dur a terme tots els passos d'aquest article, heu de ser usuari root.

Pas 1: instal·lació de Rsnapshot Backup a Linux

La instal·lació de rsnapshot amb Yum i APT pot ser lleugerament diferent si utilitzeu distribucions basades en Red Hat i Debian.

Primer haureu d'instal·lar i habilitar un repositori de tercers anomenat EPEL. Si us plau, seguiu l'enllaç següent per instal·lar i habilitar als vostres sistemes RHEL/CentOS. Els usuaris de Fedora no requereixen cap configuració especial del dipòsit.

  1. Instal·leu i activeu el repositori EPEL a RHEL/CentOS 6/5/4

Un cop hàgiu configurat les coses, instal·leu rsnapshot des de la línia d'ordres tal com es mostra.

# yum install rsnapshot

De manera predeterminada, rsnapshot s'inclou als dipòsits d'Ubuntu, de manera que podeu instal·lar-lo mitjançant l'ordre apt-get tal com es mostra.

# apt-get install rsnapshot

Pas 2: Configuració d'inici de sessió SSH sense contrasenya

Per fer una còpia de seguretat dels servidors Linux remots, el vostre servidor de còpia de seguretat rsnapshot es podrà connectar mitjançant SSH sense contrasenya. Per aconseguir-ho, haureu de crear una clau pública i privada SSH per autenticar-vos al servidor rsnapshot. Si us plau, seguiu l'enllaç següent per generar una clau pública i una clau privada al vostre servidor de còpia de seguretat rsnapshot.

  1. Creeu un inici de sessió SSH sense contrasenya amb SSH Keygen

Pas 3: Configuració de Rsnapshot

Ara haureu d'editar i afegir alguns paràmetres al fitxer de configuració rsnapshot. Obriu el fitxer rsnapshot.conf amb l'editor vi o nano.

# vi /etc/rsnapshot.conf

A continuació, creeu un directori de còpies de seguretat, on voleu emmagatzemar totes les vostres còpies de seguretat. En el meu cas, la meva ubicació del directori de còpia de seguretat és \/data/backup/”. Cerqueu i editeu el paràmetre següent per establir la ubicació de còpia de seguretat.

snapshot_root			 /data/backup/

Descomenteu també la línia cmd_ssh per permetre fer còpies de seguretat remotes mitjançant SSH. Per eliminar el comentari de la línia, elimineu el # davant de la línia següent perquè rsnapshot pugui transferir les vostres dades de manera segura a un servidor de còpia de seguretat.

cmd_ssh			/usr/bin/ssh

A continuació, heu de decidir quantes còpies de seguretat antigues voleu conservar, perquè rsnapshot no tenia ni idea de la freqüència amb què voleu fer instantànies. Heu d'especificar quantes dades voleu desar, afegir intervals per conservar i quants de cadascun.

Bé, la configuració predeterminada és prou bona, però tot i així m'agradaria que habiliteu l'interval \mensual perquè també pugueu disposar de còpies de seguretat a llarg termini. Editeu aquesta secció perquè sembli la configuració següent.

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

Una cosa més que heu d'editar és la variable ssh_args. Si heu canviat el port SSH predeterminat (22) per una altra cosa, heu d'especificar el número de port del vostre servidor de còpia de seguretat remota.

ssh_args		-p 7851

Finalment, afegiu els directoris de còpia de seguretat locals i remots dels quals voleu fer una còpia de seguretat.

Si heu decidit fer una còpia de seguretat dels vostres directoris localment a la mateixa màquina, l'entrada de còpia de seguretat seria així. Per exemple, estic fent una còpia de seguretat dels meus directoris /tecmint i /etc.

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

Si voleu fer una còpia de seguretat dels directoris d'un servidor remot, haureu d'indicar a la rsnapshot on és el servidor i quins directoris voleu fer una còpia de seguretat. Aquí estic fent una còpia de seguretat del directori /home del meu servidor remot al directori /data/backup del servidor rsnapshot.

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

Llegeix també:

  1. Com fer una còpia de seguretat/sincronització de directoris mitjançant l'eina Rsync (sincronització remota)
  2. Com transferir fitxers/carpetes mitjançant l'ordre SCP

Aquí, ho exclouré tot i només definiré específicament el que vull fer una còpia de seguretat. Per fer-ho, heu de crear un fitxer d'exclusió.

# vi /data/backup/tecmint.exclude

Primer obteniu la llista de directoris dels quals voleu fer una còpia de seguretat i afegiu ( – * ) per excloure tota la resta. Això només farà una còpia de seguretat del que heu indicat al fitxer. El meu fitxer d'exclusió sembla semblant al següent.

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

L'ús de l'opció d'excloure fitxer pot ser molt complicat a causa de l'ús de la recursivitat rsync. Per tant, el meu exemple anterior pot no ser el que esteu buscant. A continuació, afegiu el fitxer d'exclusió al fitxer rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Finalment, gairebé heu acabat amb la configuració inicial. Deseu el fitxer de configuració /etc/rsnapshot.conf abans de continuar. Hi ha moltes opcions per explicar, però aquí teniu el meu fitxer de configuració de mostra.

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/

Totes les opcions anteriors i les explicacions dels arguments són les següents:

  1. config_version 1.2 = versió del fitxer de configuració
  2. snapshot_root = Destinació de còpia de seguretat per emmagatzemar instantànies
  3. cmd_cp = Camí per copiar l'ordre
  4. cmd_rm = Camí per eliminar l'ordre
  5. cmd_rsync = Camí a rsync
  6. cmd_ssh = Camí a SSH
  7. cmd_logger = Camí a la interfície d'ordres de l'intèrpret d'ordres al syslog
  8. cmd_du = Ruta a l'ordre d'ús del disc
  9. interval per hora = Quantes còpies de seguretat per hora cal conservar.
  10. interval diari = Quantes còpies de seguretat diàries cal conservar.
  11. interval setmanal = Quantes còpies de seguretat setmanals cal conservar.
  12. interval mensual = Quantes còpies de seguretat mensuals cal conservar.
  13. ssh_args = Arguments SSH opcionals, com ara un port diferent (-p)
  14. verbós = s'explica per si mateix
  15. loglevel = s'explica per si mateix
  16. logfile = Camí al fitxer de registre
  17. exclude_file = Camí al fitxer d'exclusió (s'explicarà amb més detall)
  18. rsync_long_args = Arguments llargs per passar a rsync
  19. lockfile = s'explica per si mateix
  20. còpia de seguretat = Camí complet del que s'ha de fer una còpia de seguretat seguit del camí relatiu de la ubicació.

Pas 4: verifiqueu la configuració de Rsnapshot

Un cop hàgiu acabat amb tota la configuració, és hora de verificar que tot funciona com s'esperava. Executeu l'ordre següent per verificar que la vostra configuració té la sintaxi correcta.

# rsnapshot configtest

Syntax OK

Si tot està configurat correctament, rebreu un missatge Sintaxi bé. Si rebeu algun missatge d'error, vol dir que heu de corregir-los abans d'executar rsnapshot.

A continuació, feu una prova d'execució en una de les instantànies per assegurar-vos que estem generant resultats correctes. Prenem el paràmetre horària per fer una prova utilitzant l'argument -t (prova). Aquesta comanda següent mostrarà una llista detallada de les coses que farà, sense fer-les realment.

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

Nota: l'ordre anterior indica a rsnapshot que creï una còpia de seguretat horària. En realitat, imprimeix les ordres que realitzarà quan l'executem realment.

Pas 5: executar Rsnapshot manualment

Després de verificar els resultats, podeu eliminar l'opció \-t per executar l'ordre realment.

# rsnapshot hourly

L'ordre anterior executarà l'script de còpia de seguretat amb tota la configuració que hem afegit al fitxer rsnapshot.conf i crearà un directori de còpia de seguretat i després crearà l'estructura de directoris a sota que organitza els nostres fitxers. Després d'executar l'ordre anterior, podeu verificar els resultats anant al directori de còpia de seguretat i llistar l'estructura del directori mitjançant l'ordre ls -l tal com es mostra.

# cd /data/backup
# ls -l

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

Pas 6: Automatització del procés

Per automatitzar el procés, heu de programar la rsnapshot perquè s'executi a determinats intervals des de Cron. Per defecte, rsnapshot ve amb el fitxer cron a /etc/cron.d/rsnapshot, si no existeix, creeu-ne un i afegiu-hi les línies següents.

De manera predeterminada, es comenten les regles, de manera que cal eliminar el \# de davant de la secció de programació per habilitar aquests valors.

# 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

Permeteu-me explicar exactament què fan les regles cron anteriors:

  1. S'executa cada 4 hores i crea un directori cada hora al directori /backup.
  2. S'executa cada dia a les 3:30 i crea un directori diari al directori /backup.
  3. S'executa setmanalment tots els dilluns a les 3:00 a. m. i crea un directori setmanal al directori /backup.
  4. S'executa cada mes a les 2:30 del matí i crea un directori mensual al directori /backup.

Per entendre millor com funcionen les regles cron, us recomano que llegiu el nostre article que descriu.

  1. 11 exemples de programació de Cron

Pas 7: Informes Rsnapshot

La rsnapshot proporciona un petit script Perl d'informes que us envia una alerta per correu electrònic amb tots els detalls del que va passar durant la còpia de seguretat de les vostres dades. Per configurar aquest script, heu de copiar l'script en algun lloc a /usr/local/bin i fer-lo executable.

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

A continuació, afegiu el paràmetre –stats al vostre fitxer rsnapshot.conf a la secció d'arguments llargs del rsync.

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

Ara editeu les regles de crontab que s'han afegit anteriorment i truqueu a l'script rsnapreport.pl per passar els informes a l'adreça de correu electrònic especificada.

# 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 

Un cop hàgiu afegit correctament les entrades anteriors, rebreu un informe a la vostra adreça de correu electrònic similar a la següent.

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

Enllaços de referència

  1. pàgina d'inici de rsnapshot

Això és tot de moment, si es produeix algun problema durant la instal·lació, deixeu-me un comentari. Fins aleshores estigueu atents a TecMint per obtenir articles més interessants sobre el món de codi obert.