Sincronizando el día a día

Trabajar en varios ordenadores cada día y no tener que depender de la nube para tener todo sincronizado, es posible.

Es una afirmación aparentemente ridícula en 2015, pero tener copias triplicadas de cosas que comparar es un horror por el que cualquiera con un ordenador, y un par de usb’s, ha sufrido alguna vez.

Para solventar este problema, uso una combinación de software peculiar, pero funcional, que me permite moverme sin miedo a saber cual es la última versión.

La idea

Un Windows, en el que trabajo a diario, en el que tengo datos que transportar, de manera segura.
Un GNU/Linux, llamémosle X, con KDE (característica no exclusiva pero sí relevante).
Una USB encriptada (para la parte subrayada de arriba y para que si lo pierdo, que quien lo encuentre no pueda utilizarlo).usb

  1. Genero información en Windows.
  2. Conecto el usb al Windows y:
    1. La información nueva se copia en el USB de manera automática.
    2. La información borrada (diferencial con la anterior copia) se guarda «por si acaso».
  3. Conecto el USB a GNU/Linux y:
    1. La información nueva se actualiza en el GNU/Linux.
    2. Si genero nueva información, esta se sincroniza con el USB de manera automática en una nueva carpeta.
  4. Conecto el USB a Windows con información nueva y:
    1. Se copia de la carpeta MOD a la TODO del Windows

El flujo de información quedaría así: Windows > USB <> Linux, dónde el Windows es el principal proveedor y organizador de documentos.

La información

Soy bastante exquisito con la forma de organizar las cosas, tanto que después de 8 meses sigo buscando la forma perfecta. De momento aguanto con dos carpetas bien grandes, llamémoslas DOCU y REPO y una más pequeña llamada TO-DO.

Los marcadores del navegador

Chrome sincroniza sólo, de momento no he encontrado ninguna forma de exportarlos desde consola, aunque alguna macro seguro que me soluciona.

Firefox bookmarksautoexport
Firefox bookmarksautoexport

En cualquier caso da igual, desde que no puedo utilizarlo en casa he cambiado a firefox y tiene cosas buenas y cosas malas, una de las buenas es bookmarks auto export.

Te vas al about:config de Firefox, buscas browser.bookmarks.autoExportHTML y lo habilitas.
Cada vez que se cierre el navegador, se guarda un archivo bookmarks.html en el archivo de perfil del usuario en firefox .

La seguridad

Truecrypt sigue siendo una buena opción, aunque veracrypt, sin auditado público, sería el postulado a hacer el trabajo.

Aparentemente bitlocker también funciona en GNU/linux, pero hasta el momento no lo he probarlo.

La sincronización

Paso 1 : Windows a USB

En Windows me gusta bvckup2, una solución sencilla pero que cubre varias necesidades:

  • Copiar los archivos cuando el dispositivo se conecta.
  • Guarda los archivos diferenciales.
  • Soporte multi-perfil.

Paso 2 : USB a GNU/Linux

En GNU/Linux es un poco más tedioso pero el resultado es el mismo.

Actualmente uso KDE y luckybackup es mi wrapper de confianza, permite:

  • Crear perfiles que se ajusten a tus necesidades de copia.
  • Lanzarse en modo silencioso cargando el perfil seleccionado.

Hay cientos de wrappers para rsync ahí fuera, encontrar el adecuado es una decisión personal basada en el escritorio de turno.

Y ahora la parte puñetera… Aunque es viable hacer la ejecución de la copia tras la inserción del USB, no he encontrado ningún wrapper bbb que me haya convencido, así que toca modificar el udev a mano, para que la detección y las acciones se lleven a cabo correctamente.

Detección y asignación

/etc/udev/rules.d/00-usb-<yourdevice>.rules

ACTION=="add", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-in_udev"    
ACTION=="remove", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-out_udev"

Acción al enchufar

/usr/local/bin/usb-<yourdevice>-in_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-in &

/usr/local/bin/usb-<yourdevice>-in

#!/bin/bash
sleep 1
luckybackup --silent /path/al/perfil

Paso 3 : GNU/Linux a USB

Bvckup2  tiene otra cosa graciosa, un modo «instantáneo» en el que transfiere los archivos al momento, aunque luckybackup no tiene lo mismo; puedes configurar un perfil para que realice las copias cada hora.
Si una hora es mucho tiempo, añadir una tarea programada a cron lanzando el perfil cada minuto debería hacer lo mismo.

Si la actualización del USB no es necesaria con tanta velocidad, se podría modificar el udev de la misma manera que para la conexión.

Acción al desenchufar

/usr/local/bin/usb-<yourdevice>-out_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-out &

/usr/local/bin/usb-<yourdevice>-out

#!/bin/bash
sleep 1
luckybackup --silent /path/al/perfil

Perfiles

Siempre he hablado de perfiles, en plural, no sólo porque existan diferentes cosas que copiar sino porque las copias no son siempre bidireccionales. Me explico:

  • Windows a USB – bvckup2:
    • unidireccional.
    • archiva diferenciales.
  • USB a Directorios de trabajo en GNU/Linux – luckybackup:
    • Las acciones previas pueden montar un disco encriptado pidiendo credenciales o usando una key.
    • rsync unidireccional
  • Directorio de trabajo a USB://TO-DO – rsync:
    • unidireccional usando --compare-dest para comparar USB y directorios de trabajo
  • USB a Windows – bvckup2 :
    • unidireccional.
    • y vuelta a empezar…

Que bvckup2 no permita sincronización bidireccional me hace usar una carpeta intermedia con las modificaciones del día. Por un lado es un poco coñazo, por otro, es método y es más difícil de olvidar.

 

Todo este «dimes y diretes» de datos termina en las carpetas adecuadas para que, al abrir Sublime cada mañana y cada tarde, aparezca todo donde debería y en la versión más actualizada.

En fin… Un poco más difícil, pero más seguro -y paranoico-, que utilizar una nube.

 

·n·

PD: La sincronización bidireccional en bvckup2 se consigue con dos reglas unidireccionales.
No se recomienda porque las sincronizaciones se vuelven un poco locas con la creación de nuevos ficheros y se pueden perder datos.

Deja un comentario