Backups en GNU/Linux

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Intro

Les còpies de seguretat o backups són una part molt important del sistema, ja que permet recuperar-lo d'un desastre de fallada.

En planificar la política de backups cal que ens plantegem:

  • QUÈ guardem, és a dir, QUINS arxius cal guardar
    • Potser hi ha parts del sistema que no canvien o no val la pena guardar-les (per exemple, els arxius del sistema operatiu, ja que si cal recuperar el sistema potser podem reinstal·lar una nova versió).
  • ON els posem
    • backup local : ens permet recuperar desastres com fallades d'un disc
    • backup remot : ens permet recuperar desastres com incendis que acabin amb tot el CPD
  • QUAN i cada QUANT fem el backup
    • La operació de backup consumeix recursos, si la fem massa sovint podem alentir el sistema
    • Convé fer-los a la nit o quan el sistema estigui poc ocupat


Estratègies i Nivells

Per tal d'optimitzar el procés de backup convé plantejar-se QUINS arxius copiem:

  • Còpies de Nivell 0: copiem TOTS els arxius
  • Còpies incrementals: només copiem els arxius que hagin canviat des de la darrera còpia
    • Còpies de Nivell 1: copiem tots els arxius que hagin canviat des de la darrera còpia de Nivell 0
    • Còpies de Nivell 2: copiem tots els arxius que hagin canviat des de la darrera còpia de Nivell 1
    • etc...


Comandes

La comanda més habitual és tar, tot i que es poden fer servir d'altres:

  • tar: ens permet fer còpies incrementals de diferents nivells
  • cpio
  • dump/restore

En principi, aquestes comandes es van dissenyar per enregistrar en cintes magnètiques (TAR = Tape ARchiver) però ara tenen molta mes funcionalitat.

Són "empaquetadores", és a dir, només fan una unitat de un seguit d'arxius. Si, a més, volem comprimir, caldrà afegir la funcionalitat de GZIP o BZIP2 per minimitzar l'espai utilitzat.

TAR ja incorpora aquestes compressions i no cal utilitzar comandes addicionals.


TAR

Penseu que davant del dubte podeu mirar:

$ man tar

...per veure totes les opcions disponibles. Ens diu:

TAR(1)                                     BSD General Commands Manual                                     TAR(1) 

NAME
     tar — The GNU version of the tar archiving utility 

SYNOPSIS
     tar [-] A --catenate --concatenate | c --create | d --diff --compare | --delete | r --append | t --list |
         --test-label | u --update | x --extract --get [options] [pathname ...]

Opcions:

c → Crea un fitxer
x → eXtreu fitxers d'un fitxer contenidor
t → Testeja els fitxers emmagatzemats en un fitxer “contenidor” (mostra per stdout el contingut)
r → Afegeix fitxers al final d'un fitxer “contenidor”
v → Manera verbose
f → Permet especificar el nom del fitxer “contenidor”
Z → Comprimeix o descomprimeix mitjançant compress/uncompress
z → Comprimeix o descomprimeix mitjançant gzip
p → Conserva els permisos dels fitxers
P → Guarda els fitxers amb ruta absoluta

Exemples amb tar

La típica utilització de tar per comprimir, per exemple, tots els arxius de conf d'Apache2:

$ tar cvfz arxiu.tar.gz /etc/apache2

.tar.gz és el mateix que .tgz

Per comprovar-ho:

$ tar tvfz arxiu.tar.gz

Per descomprimir-ho:

$ tar xvfz arxiu.tar.gz

Per comprimir-ho amb BZIP2 (més comprimit que GZIP però força més lent):

$ tar cvfj arxiu.bzip2 /etc/apache2

Per comprimir els arxius que torna un find (en aquest cas, els arxius .txt continguts a la carpeta src):

$ find src -name "*.txt" | tar cfvz arxiustxt.tgz -T -

Aquest darrer cas és interessant. Fixa't en què fem servir la directiva -T (comprimeix els arxius continguts a l'arxiu indicat a continuació) i enlloc d'un arxiu a -T li passem "-", que significat stdin

El mateix es pot aconseguir amb aquesta comanda:

$ find src -name "*.txt" -exec tar -rvf arxiustxt.tgz {} \;

Només que en aquest cas el què fem és una comanda tar per cada arxiu trobat per find i l'afegim (-r=append) a arxiustxt.tgz


CRON

El CRON és un dimoni per executar tasques (comandes) programades.

Com sempre, per saber tot sobre CRON, podem fer

$ man cron

Crontab d'usuari

Els fitxer de configuració global del CRON és /etc/crontab. El podríem editar directament, però la manera oficial de treballar amb CRON és aquesta:

$ crontab -e

...i entrareu a editar-ho amb el nostre editor favorit: el VI ;)

Amb aquesta comanda editarem el CRON de l'usuari actual. OJU: quan programem una tasca CRON cal tenir clar quin usuari l'executarà per tal que tingui els permisos adients per resoldre la tasca a fer.

Anacron

Si editem /etc/crontab manualment (fes-li un cop d'ull per veure com funciona CRON), veurem que hi ha diverses entrades que s'executen regularment. Executen el què hi ha a les següents carpetes:

  • /etc/crontab.hourly : s'executa cada hora
  • /etc/crontab.daily : s'executa cada dia
  • /etc/crontab.weekly : s'executa cada setmana
  • /etc/crontab.monthly : s'executa cada mes

Per activar-ho calda instal·lar el paquet anacron.


Exercicis

...