Backups en GNU/Linux
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
Exercicis
...