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 14vol 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,xargscridatardiverses vegades i cada crida sobreescriu l’arxiu anterior, de manera que només et queda l’últim tros. Ambtar --null -T -,tarllegeix 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.