Còpies de seguretat a Linux: rsync, tar, dd i dump | Iespai
Gestionar fitxers i directoris a Linux

Còpies de seguretat i sincronització a Linux: dump, rsync, dd, tar i find



Fer còpies de seguretat i mantenir directoris sincronitzats són tasques bàsiques de qualsevol administrador de sistemes Linux. En aquest article repassem les comandes clàssiques per fer-ho (dump, rsync, dd, tar i find), corregint alguns usos que encara circulen per internet i que poden fer-te perdre dades, i et deixo les alternatives actuals quan n’hi ha.


1. dump i restore: còpies de sistemes de fitxers ext

dump copia un sistema de fitxers ext2, ext3 o ext4 sencer i permet fer còpies completes (nivell 0) i incrementals (nivells 1, 2…). És una eina antiga, pensada per a cintes; no funciona amb XFS, Btrfs ni altres sistemes de fitxers, i a Debian i Ubuntu ja no ve instal·lada (paquet dump).

Còpia completa de /home (ha de ser un punt de muntatge), registrant la data a /var/lib/dumpdates amb -u i comprimint amb bzip2 (-j):

sudo dump -0 -u -j2 -f /copies/home0.dump /home

Còpia incremental: només el que ha canviat des de la còpia de nivell 0. Fixa’t que va a un altre fitxer; si fas servir el mateix nom, sobreescrius la còpia completa:

sudo dump -1 -u -j2 -f /copies/home1.dump /home

Si li passes un directori que no és un punt de muntatge, dump només admet còpies de nivell 0, i sense -u.

restore és el complement de dump. En mode interactiu (-i) pots navegar per la còpia amb ls i cd, marcar el que vols amb add i recuperar-ho amb extract:

sudo restore -i -f /copies/home0.dump

Avui dia, per a còpies incrementals de fitxers és més pràctic fer servir tar --listed-incremental (més avall), rsync o eines com restic i BorgBackup (paquets restic i borgbackup), que fan còpies incrementals, deduplicades i xifrades.


2. rsync: sincronitzar directoris

rsync copia només el que ha canviat, de manera que la segona vegada és molt més ràpid. L’opció -a (archive) ja inclou -r (recursiu), -o (propietari), -g (grup), -p (permisos), -t (dates) i -l (enllaços simbòlics), així que no cal posar-les una per una.

Sincronitzar dos directoris locals:

$ rsync -av --delete origen/ desti/
sending incremental file list
a.txt
musica.mp3
vell.txt
docs nous/
docs nous/b.txt

--delete esborra del destí el que ja no existeix a l’origen, perquè les dues còpies quedin idèntiques. Fes-lo servir amb compte: si t’equivoques de directori, esborra. Un bon costum és provar primer amb -n (--dry-run), que mostra què faria sense tocar res.

Compte amb la barra final: rsync -a origen/ desti/ copia el contingut d’origen dins de desti; rsync -a origen desti/ copia el directori sencer i et queda desti/origen/.

Sincronitzar amb un altre servidor per SSH (des de fa anys rsync ja fa servir SSH per defecte, no cal -e ssh):

rsync -av --delete /home/ usuari@192.168.1.50:/copies/home/

3. dd: copiar discos sencers

dd copia bloc a bloc un disc o una partició. Exemple per enviar un disc sencer, comprimit, a un altre servidor per SSH:

sudo dd if=/dev/sda bs=4M status=progress | gzip | ssh usuari@192.168.1.50 'dd of=disc-sda.img.gz'

Els noms de disc antics com /dev/hda ja no s’utilitzen: avui són /dev/sda, /dev/sdb… o /dev/nvme0n1 per als discos NVMe. Comprova sempre quin és amb lsblk abans de fer servir dd, i no copiïs un disc que està muntat i en ús, perquè la còpia pot quedar inconsistent. Tens tots els detalls a la guia de dd per fer còpies de seguretat.


4. tar: arxius i còpies incrementals

Copiar i comprimir /etc i /root amb la data i l’hora al nom, excloent un directori:

sudo tar -czvf /var/copies/cfg_$(date +%F_%H%M).tgz --exclude='/root/dir1' /etc /root

Per a còpies incrementals de debò, fes servir --listed-incremental: la primera vegada fa una còpia completa i les següents només guarden els canvis, apuntant l’estat al fitxer .snar:

tar -czf home-complet.tgz --listed-incremental=home.snar /home/usuari
tar -czf home-inc1.tgz --listed-incremental=home.snar /home/usuari

A l’original d’aquest article es proposava tar -Puf, però -u (update) només afegeix al final de l’arxiu les versions noves dels fitxers, no funciona amb arxius comprimits i fa créixer l’arxiu cada vegada. Tens més exemples a la fitxa de la comanda tar.


5. find: copiar fitxers seleccionats

Copiar tots els .txt d’un directori a un altre, mantenint l’estructura de directoris (--parents):

find /home/usuari1 -name '*.txt' -exec cp -av --parents -t /home/copia/ {} +

Aquesta forma funciona amb noms de fitxer que tenen espais, cosa que no passa amb el clàssic find … | xargs cp. Si vols fer servir xargs, cal find -print0 | xargs -0.


6. find i tar: còpia dels fitxers modificats recentment

Copiar a un .tgz els fitxers del teu directori personal modificats els últims 14 dies, excloent els .mp3/.mp4 i les memòries cau del navegador i de miniatures:

find ~/ -type f -mtime -14 -not -iname '*.mp*' -not -path '*/.mozilla/*' -not -path '*/.cache/*' -print0 | tar -czvf /var/copies/home-recent.tgz --null -T -

Dues correccions respecte a la versió que corre per internet:

  • -mtime 14 vol dir «fa exactament 14 dies»; per a «els últims 14 dies» cal -mtime -14.
  • find … | xargs tar -czf és perillós: si hi ha molts fitxers, xargs crida tar diverses vegades i cada crida sobreescriu l’arxiu anterior, de manera que només et queda l’últim tros. Amb tar --null -T -, tar llegeix la llista sencera de l’entrada estàndard.

7. Arxivar els registres del sistema

Buscar tots els fitxers .log de /var/log i desar-los en un .tar.bz2:

sudo find /var/log -name '*.log' -print0 | sudo tar -cjvf logs.tar.bz2 --null -T -

8. Còpia de la taula de particions (abans, el MBR)

Abans es copiava el MBR (els primers 512 bytes del disc) a un disquet amb dd if=/dev/hda of=/dev/fd0 bs=512 count=1. Avui ja no hi ha disquets, i la majoria de discos fan servir GPT i arrencada UEFI, on aquesta còpia no serveix de res. Per desar la taula de particions, fes servir:

# Qualsevol taula (MBR o GPT), en format de text
sudo sfdisk -d /dev/sda > taula-sda.txt

# Només GPT
sudo sgdisk --backup=gpt-sda.bin /dev/sda

Per restaurar-les: sudo sfdisk /dev/sda < taula-sda.txt o sudo sgdisk --load-backup=gpt-sda.bin /dev/sda. Totes dues sobreescriuen la taula del disc: comprova tres vegades que és el disc correcte.

Si encara treballes amb un disc MBR antic i vols copiar el MBR amb dd, tingues en compte que restaurar els 512 bytes també sobreescriu la taula de particions; per restaurar només el codi d’arrencada, cal limitar-se als primers 446 bytes (bs=446 count=1).


Una última recomanació

Una còpia de seguretat només ho és si l’has provat de restaurar. Segueix la regla del 3-2-1: tres còpies de les dades, en dos suports diferents i una fora de casa o de l’oficina.

Articles relacionats

Esta web usa cookies.