La mejor forma de hacer un backup completo de tu Raspberry o tarjeta SD en Linux

Backup SD Raspberry

Si tenéis una Raspberry, es normal ir probando diferentes distribuciones de Linux o hacer pruebas que puedan cargarse el sistema operativo. Pero siempre es un buen consejo hacer backups cada cierto tiempo o cuando tengamos una configuración concreta que no queramos perder. El proceso no es complicado, pero muchos tutoriales de Internet usan comandos poco eficientes.

Al principio lo hacía con el típico dd y xz. Un total desastre, dd es muy lento pues lee cada sector del dispositivo y no indica cuanto le falta para terminar, xz es muy lento con la compresión y lo peor de todo no se comprime correctamente el espacio en blanco de la imagen de disco. Total, una SD con 1.8 GB ocupados acababa siendo una imagen de disco de 14 GB después de la compresión.

Tras probar varias alternativas lo mejor es usar estos 3 comandos, primero hacemos copia de seguridad de cada partición:

ddrescue -vv /partición imagen.img imagen.log

Al contrario que con dd, en ddrescue ves cuanto le falta para terminar de copiar. E incluso puedes parar la copia y volver a iniciarla en otro momento si creas el fichero log.

Aquí es necesaria una aclaración, hay 2 comandos con nombres muy similares: ddrescue y dd_rescue, ambas herramientas hacen lo mismo pero son de desarrolladores distintos. La más recomendada en la actualidad es ddrescue, por ser oficial del proyecto GNU y estar más actualizada. Aunque los usuarios de Ubuntu se encontrarán con los nombres cambiados en sus repositorios, debiendo instalar el paquete gddrescue.

Ahora vamos a limpiar el espacio libre para facilitar la compresión. Cuidado con esto, la Raspberry usa 2 particiones, una pequeña en FAT32 como partición de arranque y otra en ext4 para el resto del sistema operativo Linux. Este comando solo sirve para la segunda partición o cualquiera que use ext2, ext3 o ext4.

zerofree -v image.igm

Convierte en ceros el espacio no usado en un dispositivo o imagen desmontada que tenga como sistema de archivos ext2/3/4. Es más seguro que hacer dd con /dev/zero, alternativa que se recomienda en algunos tutoriales, pues zerofree se basa en la información de los inodos y no deja sin espacio en ningún momento el sistema de archivos.

Luego podemos comprimir con cualquier compresor, personalmente recomiendo plzip:

plzip -6vv imagen.img

Usa el algoritmo lzma como xz o 7-zip, por tanto comprime mejor que gzip o bzip2. Además, usa todos los núcleos de la CPU siendo entre 2 y 3 veces más rápido que xz o lzip. Y el formato .lz tiene comprobaciones de integridad, ideal para guardar imágenes de disco durante mucho tiempo al reducir el peligro de que se corrompan los datos. Usar -9 comprime en torno a un 6% más pero aumenta demasiado el tiempo y consume mucha RAM, aunque para particiones de menos de 1 GB va bien. Si queremos más rapidez podemos usar -2.

Si en los repositorios de tu distribución no hay paquetes de plzip, puedes instalarlo a mano o usar lzip con los mismos parametros, aunque es bastante más lento.

Por el contrario, si prefieres velocidad de compresión antes que ficheros más pequeños, recomiendo usar gzip.

El resultado es que la imagen que antes ocupaba 14 GB ahora ocupa menos de 800 MB. Y todos los comandos indican cuanto les falta para terminar, facilitando no tener que estar tan pendiente durante cada parte del proceso.




Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *