Borrar copias de seguridad antiguas | Algo de Linux

martes, 17 de diciembre de 2013

Borrar copias de seguridad antiguas

Para hacer copias de seguridad uso rsync (http://enavas.blogspot.com.es/2008/01/copias-de-seguridad-incrementales-con.html). Es cómodo, sencillo y me facilita las búsquedas a la hora de recuperar archivos.

Con este sistema de copias de seguridad, por cada máquina de la que hacemos copia, se guarda:
  • Un directorio main con las copias actualizadas del sistema.
  • Y un directorio nombrado mediante fecha con las modificaciones por cada día en que hubo cambios.
Para borrar copias de seguridad antiguas, podemos usar el comando find desde un script lanzado desde cron. Como es más fácil verlo con un ejemplo, os muestro mi script de borrado de copias de seguridad:

#!/bin/bash

# Primero borra copias de mas de 60 días del servidor nfs
find /var/ies_backups/servidor/ -maxdepth 1 -mtime +60 -not -iname main -exec rm -rf {} +;
# Para ver las copias que se van a eliminar: find /var/ies_backup/servidor/ -maxdepth 1 -mtime +60 -not -iname main -exec echo {} +;

# Luego borra copias de mas de 60 días del servidor ldap
find /var/ies_backups/ldap/ -maxdepth 1 -mtime +60 -not -iname main -exec rm -rf {} +;
# Para ver las copias que se van a eliminar: find /var/ies_backup/ldap/ -maxdepth 1 -mtime +60 -not -iname main -exec echo {} +;

# Luego borra copias de mas de 60 días del servidor recursos
find /var/ies_backups/recursos/ -maxdepth 1 -mtime +60 -not -iname main -exec rm -rf {} +;
# Para ver las copias que se van a eliminar: find /var/ies_backup/recursos/ -maxdepth 1 -mtime +60 -not -iname main -exec echo {} +;

# Luego borra copias de mas de 60 días del servidor freeradius
find /var/ies_backups/a22-pro/ -maxdepth 1 -mtime +60 -not -iname main -exec rm -rf {} +;

# Para ver las copias que se van a eliminar: find /var/ies_backups/a22-pro/ -maxdepth 1 -mtime +60 -not -iname main -exec echo {} +;

Analicemos uno de los comandos de borrado paso a paso:

# find /var/ies_backups/servidor/ -maxdepth 1 -mtime +60 -not -iname main -exec rm -rf {} +;

En este ejemplo estamos buscando con una profundidad de subdirectorio de 1 (-maxdepth 1), aquellos archivos/directorios que tengan más de 60 días de antiguedad (-mtime +60), excluyendo el archivo/directorio main (-not -iname main) y los borramos (-exec rm -rf {})

Fijaos lo útil que pueden ser los parámetros -iname y -not.
  • Con -iname "patrón" puedo indicar un patrón de búsqueda. Por ejemplo, si indico como patrón -iname 2013-11*, buscaré los archivos que tengan como nombre 2013-11 seguido de cualquier cadena de caracteres, lo que, en este caso, se traducirá en encontrar los directorios de copias de seguridad de noviembre de 2013.
  • Con -not simplemente voy a indicar una negación para que la búsqueda me devuelva lo contrario del patrón indicado en -iname.
Publicado por primera vez en http://enavas.blogspot.com.es