Backup por llamarlo de alguna manera.

Una best practice que llevamos a cabo en mi empresa es utilizar el driver de storage devicemapper en la partición /data que hacemos sobre LVM (*), y que usamos para persistir los datos (docker volumes persistentes) de los contenedores.

(*) Lógico y fácilmente deducible, sobretodo en entornos de Producción, en los que no puedo quedarme sin espacio: la facilidad de montar un disco nuevo en el grupo de volúmenes y aumentar el espacio «en caliente» y sin demasiadas sorpresas.

Pero este post no va de esto. La idea era dejar anotado en algún sitio una ñapa que he hecho para un tema concreto: servidor en el que instalamos un software algo conocido que se usa como flexible project management web application. Esa aplicación está dockerizada y persistimos sus datos dentro de algún directorio de la partición /data, como comentaba antes.

Querían guardar varias copias de los datos, a modo de backup, así es que cron mediante vamos haciendo un copy de los datos hacia allá varias veces al día. Y, como era de esperar, nos llenó el disco xDDD

Hablamos con el responsable técnico el cuál nos comentó de guardar sólo los 5 directorios (1 directorio <-> 1 copia) más recientes. Entro en el script que hizo un compañero (un compañero que sabe BASTANTE más que yo) y antes del cp le añado algo parecido a esto:

cd /data/directorio_concreto
ls -ltr | grep ^d | grep -i "prefijo_de_copia" | sed -e '1,4d' | awk '{sub(/. /, ""); print }' | xargs rm -rf

Me posiciono en el directorio concreto que nos interesa.

Listo todos los directorios que coincidan con el prefijo_de_copia , ordeno en orden inverso por tiempo, ignoro los que me interesan (con el sed me peto de la lista resultado de la línea 1 a la 4), con awk extraigo el nombre exacto de los directorios que quedan (teóricamente 5 porque pillé este directorio cuando llenó el disco con 9 «copias») y finalmente me los peto. Luego el script sigue realizando el cp y tal (…)

De esta manera, consigo tener siempre un máximo de 5 copias (las más recientes) pero ninguna más, para que no se me llene el disquito, que no andamos sobrados. Ñapa, porque hay millones de maneras mejores de hacerlo. Aunque funcional, porque en ese directorio nadie va a crear a mano directorios con ese prefijo_de_copia, así que si no pasa nada, y el tiempo, una caída de Producción o yo (revisando mis ñapas y mejorándolas) no lo remediamos, eso va a seguir manteniendo los 5 últimos directorios (más recientes) a modo de «Backup» de esa aplicación dockerizada. Hala!

Seguir leyendo