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

Backups incrementals

Pots fer backups totals i incrementals amb TAR.


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

Backups:

  1. Fes un script que monti un sistema d'arxius extern (per exemple, a sdb o sdc) i realitzi una còpia dels arxius .txt que hi ha a /etc.
    • A l'acabar cal desmuntar el sistema d'arxius extern.
    • Si no pot muntar el sistema extern el script s'aturarà donant un missatge per stderr sense fer cap backup.
  2. Fes un script que tregui un backup de les bases de dades MySQL del sistema en arxius separats i finalment les empaqueti en un sol arxiu .tgz
  3. TAR està preparat per realitzar còpies de seguretat de nivell 0 i incrementals.
    • Com utilitzar TAR per backups incrementals.
    • Fes un script que faci un backup de /etc
    • Si li passem la opció -0 farà un backup de nivell 0 (total). Per fer un de nivell 1 li passarem -1 com a argument.
    • Ha de dir quants arxius ha processat
    • Els errors s'han de volcar sobre l'arxiu /tmp/etcerr.txt

Cron:

  1. Programa el CRON perquè a cada minut afegeixi la data actual a l'arxiu /tmp/dates.txt (sense esborrar el què hi ha).
  2. Fes un script que faci un backup de nivell 0 cada 5 minuts i un backup incremental cada minut.
    Es recomana que abans facis l'exercici 3 de backups.
  3. ...