Còpies de seguretat amb tar: fullbackups, incrementals i diferencials

Sobre les còpies de seguretat.

Depenent de l'objectiu que tinguem a l'hora de crear una còpia de seguretat de les nostres dades, haurem de seguir una estratègia o l'altra. Si el que volem és realitzar solament una còpia completa o parcial com una cosa puntual de les nostres dades, podrem usar el comande tar en el seu ús més bàsic (opció 1). En canvi, si treballem amb una gran quantitat de dades canviants i volem seguir un control i suport d'ells de manera estricta pel que poguera ocórrer, podrem triar l'opció 2 d'aquest tutorial.

1) Per a la primera de les opcions bastaria amb usar el comandament tar o cpio en el seu ús normal per a crear una full única:

Recolzar el directori home del meu usuari (empaquetat i compressió) amb tar:

$ tar -cpvzf mibackup.tar.gz /home/miusuario

Podem usar -j per a comprimir amb bzip2 o -J per a comprimir amb xz (tots dos solen oferir millor resultats que gzip, només que aquest últim és més comú).

Important: Si empaquetem utilitzant rutes absolutes haurem d'anar amb compte a l'hora de desempaquetar, podrem eliminar sense voler els arxius de /home. És preferible usar ruta relativa ‘./*’ o bé aïllar el desempaquetat en un directori.

fer còpia del meu directori home amb cpio.

$ find /home/miusuario | cpio -o | gzip /tmp/mibackup.cpio.gz

2) Per a la segona opció, segurament una bona manera de fer còpies de les dades seria realitzar-les diàriament. Per a no haver de realitzar còpies de seguretat completes cada dia, alguna cosa que ens portaria molt temps i un consum elevat d'espai en el disc, usarem el comande tar amb les seues opcions -g o -N per a crear còpies de seguretat incrementals o diferencials respectivament.

Un exemple seria crear una còpia full (fullbackup) de tot el directori o dispositius un determinat dia de la setmana (o del més), per exemple un dilluns i la resta de la setmana (dimarts, dimecres, dijous i divendres) realitzar còpies incrementals o diferencials. Una altra estratègia a seguir és la de combinar els 3 tipus de còpies de seguretat. Veurem això més endavant.

Aquests factors estaran determinats per la grandària dels arxius a copiar.

Còpies de seguretat diferencials i incrementals

Les còpies de seguretat diferencials copien tot el contingut canviat basant-se en una còpia full anterior. Imaginem que hem realitzat una còpia full d'un directori un dilluns, i el dimarts realitzem una còpia diferencial d'aqueix mateix directori, fins ací a penes existeix diferència entre la còpia de seguretat diferencial i la còpia de seguretat incremental. Però el dimecres tornem a fer una altra còpia de seguretat diferencial del directori, aquesta còpia ja tindrà els canvis del dimarts més els canvis del dimecres per què la seua grandària anirà creixent amb respecte anem fent altres còpies els pròxims dies (dijous i divendres).

En canvi, les còpies de seguretat incrementals segueixen un altre mètode. El que fan és dependre directament de la seua còpia anterior, és a dir si tenim una full realitzada el dilluns i l'endemà (dimarts) es realitza una còpia de seguretat incremental, es guardaran les dades canviants entre el dilluns i el dimarts fins al moment de fer la còpia. Fins ací és similar a la còpia de seguretat diferencial, però la diferència entra en joc al pròxim dia, és a dir en la còpia del dimecres, on la nova còpia incremental només guardarà les modificacions realitzades des del dimarts fins al dimecres al moment de fer la còpia de seguretat, per la qual cosa la grandària d'aquesta còpia de seguretat incremental serà menor que el del diferencial del mateix dia.

L'avantatge de la còpia diferencial radica a l'hora de recuperar les dades, però l'estalvi d'espai en disc és menor. Si volem tornar a les dades del dimecres passat, haurem de restaurar la còpia full del dilluns i la diferencial del dimecres. Per contra, per a recuperar les mateixes dades mitjançant còpies incrementals, haurem de restaurar la full del dilluns, tot seguit la incremental del dimarts i finalment la còpia de seguretat incremental del dimecres.

Combinar els tres tipus de còpies de seguretat: Comentàvem a l'inici la possibilitat de combinar els tres tipus de còpies. Això és útil si en comptes de crear una full cada setmana, la creàrem únicament el primer dia del mes. En un cas hipotètic que el més començara en dilluns podem llavors realitzar un full còpia de seguretat el dia 1 del mes (dilluns), el dimarts, dimecres, dijous i divendres creguem incrementals. El següent dilluns creem una diferencial i tornarem a crear incrementals els següents dies. Al següent dilluns tornem a realitzar una còpia de seguretat diferencial i repetim està tècnica fins a final de mes. Aquesta estratègia de còpies de seguretat ens permet restaurar el sistema a un determinat dia desempaquetant la full del primer dilluns del mes i després depenent de la setmana, desempaquetarem la diferencial del dilluns d'aqueixa setmana i posteriorment les incrementals. Així no hem de desempaquetar la full del dilluns i anar restaurant una a una les còpies incrementals fins al dia a què volem tornar (imaginar que aquest dia és el dia 21, hauríem de restaurar la full mes 20 còpies de seguretat incrementals!!)

*Important: El comande tar ací ens limita una mica el procés (almenys fins al punt al qual he pogut arribar). Si fem una diferencial aqueix dilluns, aquesta contemplarà tots els canvis des del dilluns passat fins al moment de crear el diferencial, PERÒ, quan el dimarts tornem a crear una incremental (com s'ha proposat en l'exemple), aquesta incremental tindrà a part dels canvis del dimarts, els que ja té la diferencial del dilluns, és a dir, que d'alguna manera dupliquem dades en aquesta còpia puntual.

Un avantatge o inconvenient (segons es mire) de combinar diferencials i incrementals, és que si per exemple tenim una full del dia 1, la incremental del dia 2 té nous arxius, la diferencial del dia 3 conté els arxius del dia 2 i els del dia 3, després el dia 4 eliminem arxius i afegim altres nous i fem una incremental, si volem recuperar els eliminats, podrem tornar a desempaquetar la diferencial del dia 3. De no comptar amb ella no podríem recuperar-los, ja que primer desempaquetaríem la full del dia 1, i després les incrementals del dia 2 i del dia 4, en aquesta última no estarien els arxius que si hi havia el dia 3 (els quals gràcies a la còpia de seguretat diferencial SI podem recuperar-los!!).

El desavantatge és que potser estaves totalment segur de voler eliminar-los i quan descomprimeixes la full i després la diferencial, existeixen aqueixos arxius que ja vas eliminar.

Fer còpies de seguretat incrementals amb tar

Llista Creem la còpia de seguretat full del directori que volem recolzar (cal usar l'opció -g com indiquem):

$ $ tar -cpvzf "fullbackup_`date +%d%m%Y`.tgz" -g /home/nebul4ck/history/backup.snap /home/nebul4ck/recursos/*

Nota: Podem crear millor la còpia de seguretat movent-nos fins a ./recursos i indicant en el comando tar la ruta relativa ‘./*‘. De la manera en la qual ho hem fet haurem d'anar amb compte a l'hora de desempaquetar. Si ho fem des del directori arrel picarem els arxius de l'home.

IMPORTANT: L'arxiu còpia de seguretat.snap és el que guarda les metadades que informen sobre els canvis que han ocorregut en el directori. Si aquest arxiu no existeix es crearà. Serà l'arxiu que es llija quan es faça la còpia de seguretat incremental. Si ho eliminem, tar no trobarà informació sobre els canvis realitzats en el directori, per la qual cosa tornarà a crear un full còpia de seguretat.

Ara podrem crear la còpia de seguretat incremental del dimarts, els canvis que hàgem fet seran gravats en l'arxiu còpia de seguretat.snap (snapshot).

$ tar -cpvzf "inc_backup_`date +%d%m%Y`.tgz" -g /home/nebul4ck/history/backup.snap /home/nebul4ck/recursos/*

Fer còpies de seguretat diferencials amb tar

Per a realitzar còpies de seguretat diferencials amb tar usarem la seua opció -N. El que ens permet aquesta opció és ordenar a tar que només arxive aquelles dades que han sigut canviats o agregats des d'una determinada data, fins a la data d'execució del comando. Per exemple imaginem que la data del fullbackup és del dilluns 9 de febrer del 2015 i hui (dia en què realitzem la còpia de seguretat diferencial és dimecres 11 de febrer del mateix any), farem el següent:

Crear la còpia full (la del dia 9 de febrer):

$ tar -cpvzf "fullbackup_`date +%d%m%Y`.tgz" /home/nebul4ck/recursos/*

Crear còpia diferencial amb els canvis ocorreguts des del Dilluns 9 al Dimecres 11 del 2015

$ tar -cpvzf "dif1_backup_`date +%d%m%Y`.tar.gz" /home/nebul4ck/recursos/* -N 09-feb-15

Nota: Si tornàrem a crear un altre diferencial el dijous o el divendres amb data 09-feb-15, contindrien també els canvis reflectits en dif1 és per això que la seua grandària va augmentant en comparació amb les còpies de seguretat incrementals.

A partir d'aquesta fon.