Papelera de reciclaje con Samba
October 21st, 2008La papelera de reciclaje es una de esas cosas a las que uno se acostumbra facilmente por su sencillez y utilidad. Seguro que a todos nos ha pasado alguna vez eso de borrar un documento y darnos cuenta al rato de que hemos borrado la versión equivocada. Antiguamente en DOS existía el comando undelete, y aún hoy tanto en Windows como en Linux, existen herramientas que permiten recuperar archivos directamente de disco, pero ninguna de estas herramientas tienen la sencillez de uso de la papelera de reciclaje.
Cuando trabajas en un entorno de red y pasas toda la información a una ubicación de un servidor, esta funcionalidad ya no está disponible. La papelera de reciclaje no funciona con unidades de red en Windows o ubicaciones montadas con Samba en Linux, ya que únicamente permite almacenar información local. Sin embargo es posible configurar Samba para que cree algo parecido a una papelera de reciclaje en cada unidad compartida.
La configuración de esta característica es sencilla y se basa en la utilización de los módulos Virtual File System (VFS) de Samba 3. Uno de estos módulos es recycle. Este módulo intercepta las peticiones de borrado de archivos y los mueve a otro directorio en vez de borrarlos. Este directorio sin embargo no aparecerá en la papelera de nuestro equipo, siendo necesario acceder a la carpeta directamente. Por el contrario nos ofrece bastantes características de configuración que permiten crear un sistema bastante más potente.
Para su configuración el primer paso consiste en crear el archivo /etc/samba/recycle.conf que será utilizado como configuración por defecto de la papelera, con el siguiente contenido:
name = .recycle mode = KEEP_DIRECTORIES|VERSIONS|TOUCH maxsize = 0 exclude = *.tmp|*.TMP|*.temp|*.o|*.obj|~$*|*.~??|*.log|*.trace excludedir = /tmp|/temp|/cache noversions = *.doc|*.ppt|*.dat|*.ini directory_mode = 0700
En él se indica que el nombre del repositorio es “.recycle”, donde se moverán los archivos eliminados. La línea con nombre mode indica que se cree una estructura de directorios equivalente a la de los archivos que se eliminen, que se generen versiones de un archivo si se eliminan dos archivos con el mismo nombre, y que se actualice la fecha de acceso a los archivos al moverlos a la papelera. Aparte se indican un conjunto de extensiones de archivos y carpetas que no se moveran a la papelera, y un conjunto de extensiones para las que no generar versiones.
Tras esto es necesario configurar los repositorios exportados por Samba para hacer uso de la papelera configurada. Para ello editaremos el archivo /etc/samba/smb.conf añadiendo algo como:
[Datos] ... vfs object = recycle recycle:config-file = /etc/samba/recycle.conf recycle:repository = .recycle recycle:keeptree = Yes recycle:versions = Yes
En estas líneas se muestra como se configura la unidad compartida de nombre “Datos” para hacer uso del módulo VFS recycle y se le indica utilizar el archivo recycle.conf creado en el paso anterior. Es posible sobreescribir cualquier parámetro configurado en recycle.conf.
Finalmente es necesario reiniciar el servicio con sudo /etc/init.d/samba restart, tras lo cual ya podemos borrar cualquier archivo y ver cómo se mueve automáticamente a la carpeta .recycle de la raíz de la unidad.
El único problema que tiene este sistema es que fácilmente podemos llegar a generar gran cantidad de archivos y versiones en las carpetas de papelera, para lo cual puede ser conveniente configurar un trabajo periódico que elimine todos los archivos que hayan sido accedidos por última vez en un número de días determinado, cosa que podemos hacer fácilmente mediante crontab y el uso de find. Por ejemplo:
56 06 * * * find /home/shares/.recycle -atime +7 -type f -exec rm {} \;
delicious
menéame
fresqui

October 22nd, 2008 a las 1:55 pm
Muy buen aporte! Estamos aún “jugando” con las posibilidades de Samba y esto nos a venido de perlas.