[Tutorial] Cómo crear backups cifrados e incrementales en Debian y derivados con Déjà Dup

Deja DupYa he comentado en algún podcast que por lo general, siempre suelo instalar mis máquinas Debian (escritorio) con LVM cifrando la raíz, /home y la swap (una buena “feature” de Debian, si cifras vía dm-crypt tu /home, por seguridad te obliga desde el instalador a cifrar la swap por los datos que se podrían extraer almacenados en RAM).

Como además de mis equipos portátiles también tengo cifrados los de escritorio, según mi criterio, no tendría mucha lógica guardar las copias de seguridad sin esa capa de cifrado y ahí es donde entra en escena Déjà Dup (el nombrecito se las trae, lo sé ;D).

También es importante comentar que tras más años de los que recuerdo usando KDE, llevo unos meses con GNOME (modo clásico y “flashback según equipos, menos recursos que un Shell “puro”) y XFCE ya que la integración con (en adelante) Deja Dup es muy buena (este tuto lo estoy escribiendo desde Debian Testing y GNOME 3.8.4).

Cuando hablo de mejor integración, me refiero a poder hacer click con el botón del ratón y ver un menú contextual (más abajo veréis las capturas) con el texto: “restaurar los ficheros que faltan” y es pinchar el disco, y ver restaurado el fichero o directorio sin problemas. También los indicadores de progreso de la copia de seguridad, o el aviso emergente caso de haber programado una tarea, del inicio de la copia.

En el título pongo Debian y derivados, ya que es válida para otras distros como Ubuntu o Mint, pero está empaquetado en muchas más con algún ligero cambio. Por ejemplo,[Enlace bloqueado por la Tasa española AEDE].

Así que ya sabéis, sólo un aptitude install deja-dup y empezar con esos backups. Os pongo unas cuantas capturas de pantalla para que podáis ver en modo gráfico lo que os he ido comentando. Sencillo, seguro y efectivo, concepto KISS a tope.

Seleccionando la opción de cifrado e introduciendo la frase de paso.

Aquí podéis configurar opciones de la copia de seguridad.

Un ejemplo con la frecuencia de las copias de seguridad.

La opción que os comentaba de restauración y el menú contextual.

Seleccionando el fichero a restaurar.

Confirmación y ubicación (coge la ruta de forma automática).

Progreso de la restauración.

Y confirmación de que todo ha salido ok.

Un vistazo después a los ficheros .gpg.

Eso es todo, espero que lo encontréis útil y no dejéis de hacer vuestros backups.

A vueltas con el nombre

Quiero suponer que no soy el único que reutiliza código, funciones y scripts para evitar reinventar la rueda una y mil veces. En mi caso, guardo unas cuantas líneas de código de una práctica del siglo pasado, varias funciones de cuando empezaba a conocer el shell bash y una «mecánica de obtener los datos más comunes» que lleva vigente casi dos décadas.

¿A dónde quiero llegar con esto? A que quizá, tal vez, debería revisar esas líneas de código cada cierto tiempo. Más concretamente cada lustro. Os pongo un par de ejemplos que me han hecho ver la importancia de la actualización del código reciclado.

La dirección IP

Un clásico, necesitas conocer la dirección IP de la máquina porque mil posibles motivos. Hasta la fecha, yo utilizaba esta línea:

IPADDR=`ifconfig eth0 |grep "inet addr"|cut -d":" -f2 |cut -d" " -f1`

Sencillo, ¿verdad? Esa línea devuelve la dirección IP y la almacena en una variable. Rápido y limpio.

El nombre y los apellidos

Para el FQDN (Full Qualified Domain Name) y el nombre de la máquina (hostname) tenía las siguientes líneas. Tengo que advertir que la tercera línea no es mía (aunque me gustaría), apareció en mi buscador automágicamente y quedé embelesado de su belleza, así que la uní a la biblioteca de código.

FQDN=`grep ^127 /etc/hosts | grep -v localhost | awk '{print $2}'`
HOST=`echo $FQDN |awk -F. '{ print $1 }'`
DOMAIN=`echo $FQDN |awk -F. '{$1="";OFS="." ; print $0}' | sed 's/^.//' `

Al igual que con la dirección IP resulta sencillo pegarlas en un script y utilizarlas sin más, sin preguntarte si hay una forma mejor de obtener la información.

Nota: estas líneas dependen completamente de un fichero /etc/hosts bien formado. Sino, ni te molestes.

El comando del nombre

De esta forma andaba yo, utilizando viejas líneas de código pasadas de mano en mano desde el inicio de los tiempos, hasta hace un día, que tenía que saber todas las direcciones IP de un determinado equipo. Se me ocurrió buscarlo en vez de modificar la línea porque hay gente mucho más inteligente y elegante que yo y, en un foro, lei:

«mira el comando hostname»

Sólo te dice el nombre, pensé. Por curiosidad le eché un ojo a la ayuda de consola y se me cayó el alma a los pies:

Program options:
-a, --alias alias names
-A, --all-fqdns all long host names (FQDNs)
-b, --boot set default hostname if none available
-d, --domain DNS domain name
-f, --fqdn, --long long host name (FQDN)
-F, --file read host name or NIS domain name from given file
-i, --ip-address addresses for the host name
-I, --all-ip-addresses all addresses for the host
-s, --short short host name
-y, --yp, --nis NIS/YP domain name

Para saber todas las direcciones IP de un equipo basta con ejecutar hostname -I. Sin más. Sin ser root ni zarandajas y, además, por si quieres procesarlas bien, te las devuelve en una línea y separadas por espacios, envueltas para regalo.

Si quieres saber el FQDN, hostname -f. Para el dominio, hostname -d. No hace falta nada más. Supongo que un buen fichero /etc/hosts ayuda pero estoy por apostar a que sin el también funciona.

¿Esta historieta tiene moraleja? ¡Por supuesto! Si utilizas un sistema operativo basado en el principio KISS debes saber que, por muy bonito que sea tu código, por mucho que lo hayas razonado, pulido, probado y vuelto a pulir, siempre habrá otro (código, programa, aplicación) que hace lo mismo de mejor forma, en menos líneas y más rápido. Y te va a doler en el orgullo ;).

Presentando The Original Hacker, un juego con la inteligencia

El pasado domingo 20 de octubre, me di cuenta que dejar de invertir tiempo y esfuerzo en reparar los errores de terceras personas y dejar de sentirme obligada a cumplir con las responsabilidades de otros, me iba a permitir poder poner mayor dedicación en generar material que verdaderamente sirviese a programadores en vías de convertirse en Hackers y a los Hackers más avezados.

Así fue, que con la premisa de conservar la esencia de lo que venía haciendo, me propuse crear The Original Hacker, un nuevo magazine cuyo espíritu se basa en la libertad y el verdadero Hacking.

Sigue leyendo

[truco] sudo no encuentra el PATH al usar apt o aptitude

Desde finales de verano, con cada actualización diaria de sid obtenía un error de apt o aptitude (ambos fallaban por igual), diciendo que no podía encontrar el PATH correcto.

dpkg: aviso: `ldconfig' no se ha encontrado en el PATH o no es ejecutable.
dpkg: aviso: `start-stop-daemon' no se ha encontrado en el PATH o no es ejecutable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
Un paquete no se pudo instalar. Intentado recuperarse:
dpkg: aviso: `ldconfig' no se ha encontrado en el PATH o no es ejecutable.
dpkg: aviso: `start-stop-daemon' no se ha encontrado en el PATH o no es ejecutable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.

Una comprobación rápida me decía que las rutas de la variable sí estaban bien fijadas en el usuario root y, de hecho, la misma operación, comando por comando, funcionaba bien en el momento en que iniciaba sesión como superusuario. Así que era cosa de sudo.

Como muchos, espero, tengo un alias creado para actualizar el equipo de forma rápida e indolora (la mayoría de las veces :)), que utiliza sudo para evitar iniciar sesión.

diego@mestizo:~$ alias uf
alias uf='sudo aptitude update && sudo aptitude full-upgrade && sudo apt-get clean'

Para evitar el error del PATH, hay que especificar cuales son las rutas adecuadas a emplear con el programa. En otras palabras, hay que añadir la siguiente definición:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

al fichero /etc/sudoers. Hecho esto, se acabaron los avisos, los inicios de sesión y demás engorros.

Kfilebox, cliente Dropbox en KDE y Dropbox Service Menu, mejor integración con Dolphin (“botón derecho, enviar a”)

Hola amigos, aprovechando la nueva instalación que estoy realizando de Debian y KDE (también tengo instalado GNOME) en un MacBook Pro de 15″ recién adquirido y, para los que como yo uséis KDE, sólo quería dejar un par de tips interesantes para los “kadeeros” (joder cómo suena;) sobre un servicio tan utilizado como Dropbox.

(Seguro que hablaremos de mi “install” en el podcast 28 que saldrá estos días n1mh y yo. Por cierto, grabé un especial seguridad con Sergio Hernando, alguien con mucho peso en ese “mundillo” que al final es todo un mundo, saludos desde aquí también Sergio ;)

Dropbox, descarga ; (en mi caso el paquete Ubuntu x86 64.deb)

Kfilebox, cliente Dropbox con mejoras para KDE.

Enlace a la web del proyecto.

Integración de Dropbox Service Menu en Dolphin

Desde el menú “Preferencias” de Dolphin, “Servicios” y “Descargar nuevos servicios“;

 

 

Luego  Dropbox Service Menu;

Desde aquí dar las gracias como siempre a esos desarrolladores que tanto nos ayudan con nuestros sistemas ;). Espero que os resulten estos dos tips tan útiles como a mi, saludos !