UCS: extrañas relaciones para archivos de usuarios …

Imagen miniatura para Imagen miniatura para Cofre… que hacen que todo sea mucho más divertido, pero también mucho más complicado. ¿ Y qué ocurre cuando los mecanismo son complicados ? Pues que los fallos pueden ser mucho más interesantes. ¡ Hurra ! ¡ Diversión asegurada !

archivos de usuario1.png

Preliminares

Repasemos la situación actual en mi lugar de trabajo.

  1. Los homínidos que trabajan para la empresa emplean ordenadores autónomos funcionando bajo la distribución de Linux Debian; el acceso a los archivos compartidos se lleva a cabo mediante montajes vía NFS sobre los servidores de la empresa.
  2. Las copias de seguridad se llevan a cabo empleando Bacula, que no es precisamente rápido de montar, en los servidores locales y externos, y únicamente sobre bases de datos, programas, configuraciones y documentos. Todo funciona bien y hay armonía pero ….
  3. Los homínidos generan información contínuamente -especialmente documentos e imágenes- fuera de su directorio de trabajo en red. Esto es un hecho obvio y poco se puede hacer para remediarlo dentro de las leyes del estado en el que vivimos. Es más, si en lugar de indicarles que trabajen siempre sobre $HOME/Archivos (como es el caso) les dices (vaaaale, aceptamos pulpo) que pueden emplear $HOME para guardar sus cosas, se las apañarán para utilizar cualquier lugar fuera de su zona (como /tmp) en la que tengan permiso de escritura. 
  4. Por no ahogar los medios de copia hay muchísimas cosas que estoy ignorando totalmente. Entre ellas están los archivos de configuración de programas como el lector de correo y el navegador (icedove, iceweasel, Google Chrome, …) y sus cachés, porque no merece la pena el esfuerzo si el correo está en servidores externos y la navegación web es efímera en la mayor parte de los casos. Y, seamos realistas, me da igual que pierdan su histórico de páginas visitadas.

También tengo estas otras consideraciones:

  1. Por motivos que no vienen al caso considero que sería tan bueno que esos archivos no estuviesen en Google Drive como que sí estuviesen en nuestra nube interna.
  2. Nuestra nube está gestionada por el programa ownCloud. Aunque ofrece varias formas de acceder a los archivos del usuario entre ellas no está el montaje vía NFS. Es una lástima pero es lo que hay, y siempre me queda WebDAV como posibilidad real a pesar de que también tiene su aquél para usarlo sin intervención humana.
  3. Aunque es posible forzar las cosas y exportar los directorios de archivos de usuarios de ownCloud en crudo vía NFS o rsync, creamos el problema de que dejamos fuera de juego al programa y no registrará cambios en su bases de datos ya que entramos por la puerta de atrás. Supongo que como todos: sáltate las reglas impuestas y quéjate luego de que el Universo es injusto.
  4. El cliente de sincronización para ownCloud tiene varios inconvenientes prácticos desde el punto de vista de instalaciones automáticas como las que acostumbro a utilizar:
    1. Es difícil -y está poco documentada- la configuración vía archivo en lugar de utilizar el interfaz gráfico. Eso  quiere decir que al final me tocará ir terminal por terminal, ajustándolo a mano, y que suspiraré desalentado cada vez que tenga que encarar algún cambio global como excluir cierta carpeta precisamente porque …
    2. No tiene un juego de reglas flexible para excluir archivos en la sincronización. Dado que dentro del árbol de directorios existen enlaces a directorios de red no puedo permitirme ningún fallo en la selección de archivos o el espacio de copias desaparecerá en un par de días.
    3. Aún no es estable del todo con archivos con mucho uso -como los que puedan emplear aplicaciones como Zim (un wiki de escritorio muy cómodo)- y los errores y avisos son constantes en el escritorio. Es lo único que le faltaba ya a mis homínidos: estímulos que les distraigan de su tarea de apretar botones.

Así pues me he puesto a buscar un programa que me permitiese sincronizar un par de directorios, que tuviese capacidad de selección de archivos y que funcionase en segundo plano sin fanfarrías ni excesos en el escritorio (y estoy hablando de sincronización en los dos sentidos, lo que borren en la nube tiene que borrarse en su escritorio).

Bien, pues creo que lo he encontrado y que se llama unison.

archivos de usuario2.pngEl software

archivos de usuario3.pngSegún éstos esquemas lo idóneo es montar los archivos del usuario de owncloud en un directorio concreto y configurar un perfil de sincronización en unison para que regularmente los vigile y efectúe los movimientos de archivos y carpetas que correspondan. El problema aparece cuando ves las herramientas de que dispones para efectuar el montaje -sin recurrir al homínido- son bastante reducidas.

En el caso que expongo tengo que emplear un módulo especial de PAM para reutilizar la contraseña de la sesión y efectuar el montaje vía davfs2 y luego, en el script que arranca la sesión gráfica lanzar unison en segundo plano para que vaya trabajando mientras el usuario sigue con su vida.

De esta forma voy a crear un paquete Debian llamado empresa-desktop-backup que dependerá de empresa-desktop y arrastrará, al menos, los paquetes:

  • libpam-mount
  • unison
  • davfs2

e incluirá la configuración para que funcione. Lo malo, y es bastante malo, es que emplear algo como PAM requerirá un reinicio de sesión si algo falla. Tengo que pensar en alguna solución parcial para éste caso. Afortunadamente controlo el funcionamiento del escritorio en su práctica totalidad y lo mismo sólo tienen que escribir una contraseña por pantalla. Cuestión de entrenarles, asumo ya.

Los detalles técnicos irán en otra entrada …