Cómo usar el star para optimizar los respaldos en linux

Imagen de Epe

Hace un tiempo me tropecé con un cliente que maneja una cantidad apreciable de información, y requieren hacer respaldos diarios de sus aproximadamente 50 gigas de información altamente dispersa (es decir, son 50 gigas de pequeños archivos de 500bytes, 1kb, 2kb de tamaño, son cientos de miles de pequeños archivos).

En este pequeño howto indicaremos primero la forma tradicional usando el tar, y pondremos los mismos ejemplos pero con el star. Para cualquiera que maneje una gran cantidad de inodos y respaldos mayores a 1GB le sugerimos tratar de implementar el star por todas las características que mencionaremos a continuación

Aquí puse el documento que siempre mantendré actualizado:
http://www.ernestoperez.com/staticpages/index.php?page=20050315104737185

El texto completo a continuación:

¿Cómo realizar respaldos en linux?
¿Cómo realizar respaldos más rápidos y efectivos?

La forma más común de hacer respaldos, ya sea a cinta o a disco o a cualquier medio de almacenamiento, está siendo el comando tar. En realidad es un comando antiguo, probado, realmente casi siempre funciona para hacer respaldos.

¿Cómo hacer respaldos con tar?

Bien simple, supongamos que tenemos una cinta, normalmente localizada en /dev/st0 y queremos hacer un respaldo de los directorios de home, los logs y los archivos de configuración. Un buen acercamiento sería:

tar -cf /dev/st0 /var/log /home /etc

Este comando haría un paquete sin comprimir en formato tar. De los directorios /var/log, /home y /etc

Para hacer un paquete pero guardar comprimido este, pongámosle una z o una j:

tar -zcf /dev/st0 /var/log /home /etc

Esto comprimiría en gzip antes de pasar a la cinta. Este comando usa mucho más procesador y posiblemente memoria que el comando que no comprimía.

Si queremos comprimir en formato BZIP2 (mucho más compacto pero demorado):

tar -jcf /dev/st0 /var/log /home /etc

Si no tuviéramos cinta, podemos en vez de mandar a un dispositivo de cinta, mandar el paquete a otro disco, supongamos está montado en /backup:

tar -zcf /backup/respaldo.tar.gz /var/log /home /etc

Así haríamos un respaldo a otro disco de los directorios antes mencionados.

Ahora, el comando tar tiene ciertas dificultades ya probadas por nosotros. Y es que al realizar respaldos muy grandes, tiende a dejar de responder y a veces hasta nos echó la máquina al piso.

Por eso aquí veremos otro comando más moderno llamado star. Definitivamente hemos comprobado que es un gran porcentaje (posiblemente 25%) más rápido que el antiguo tar. Y es más eficiente en el manejo de memoria y procesador por lo que en máquinas que demoraban un mundo o fallaban haciendo un respaldo con tar hemos logrado hacer los respaldos usando star sin mayor complicación.

Al momento la utilidad star es la más rápida conocida que imita al tar. Se ha comprobado que puede trabajar a velocidades superiores a 14mbit/s y que ofrece una tecnolocía de doble buffering que mantiene la unidad de cinta alimentada con datos constantemente.

El star comenzó a implementarse por el año 1982 y sigue siendo un trabajo en progreso. Es muy eficiente además con respaldos mayores a 1GB y es capaz de manejar una enorme cantidad de archivos (inodos) sin mayor uso de memoria.

El star tiene cierta compatibilidad con el tar, es capaz de abrir archivos hechos en tar.

Definitivamente por todas estas razones y muchas más, aqui pondremos el procedimiento para usar el star.

¿Cómo hacer respaldos con star?

Primero verificar que tengan el comando star en la máquina, en redhat y clones de redhat, está en un paquete aparte que se llama star, buscar este rpm e instalarlo si es que no está instalado ya en el sistema. Este paquete no sobreescribe al tar, siguen siendo dos comandos apartes e independientes. Se puede instalar online usando: yum -y install star

Seguidamente, hagamos el respaldo, comencemos con el más simple:

star -cv f=/dev/st0 /var/log /home /etc

Con este comando haríamos un respaldo (como tar -cf /dev/st0 ...) a cinta.

Si queremos comprimirlo:

star -zcv f=/dev/st0 /var/log /home /etc

Esto lo comprimiría con gzip. No conocemos de compresión vía bzip2 de forma directa.

Si queremos usar un archivo en vez de cinta pondríamos:

star -cv f=/backup/respaldo.tar /var/log /home /etc

y listo, crearía el tar en un archivo dentro de un directorio.

¿Cómo se abre un archivo star?

star -xv f=/dev/st0

abriría todos los contenidos.

Si deseamos solamente un directorio o archivo en específico, se lo hacemos saber con el nombre al lado, sin / inicial:

star -xv f=/dev/st0 etc/passwd

este sacaría sólo /etc/passwd y nada más de todo el respaldo, lo que me permitiría recuperar cierto archivo si conozco su nombre o directorio.

Definitivamente consideramos por la capacidad que puede trabajar el star, que este es el recomendado para manejar grandes cantidades de archivos dispersos o respaldos mayores a 1GB, es mucho más rápido en estas circunstancias y seguro les dará menos problemas de performance.