Recuperar desde BackupPC por línea de comandos

BackupPC es una herramienta formidable para respaldar y guardar un registro histórico de respaldos en el storage del servidor. Pero está orientado al uso mediante interfaz web, y cuando queremos vincularos con el servidor por la línea de comandos, es algo complicado.

Recuperar el directorio /usr/local/sbin en forma automática se puede usar este comando, ejecutado en el servidor a recuperar.


cd /usr/local; \
ssh backuppc@server.backuppc \
/usr/share/backuppc/bin/BackupPC_tarCreate \
-h "$(hostname -f)" -n -1 -s "$(pwd)" "sbin" | tar xf -

Explicándolo:

cd /usr/local: es el directorio ‘source’ respaldado, registrado en $Conf{RsyncShareName}
ssh backuppc@server.backuppc: supone que tenemos acceso ssh al servidor backuppc y las credenciales como el usuario bakcuppc. Si se accede como root se puede ejecutar con sudo -u backuppc pues el comando BackupPC_tarCreate lo debe ejecutar el usuario backuppc obligatoriamente.
-h $(hostname -f): va a ser reemplazado con el nombre del host respaldado, desde el cual se ejecuta el comando. Si BackupPC lo conoce por la IP se puede poner directamente luego del -h.
-n -1: recupera el último backup realizado. Se puede colocar el numero de backup se se desea otro.
-s $(pwd): va a ser reemplazado con el directorio actual del host respaldado, desde el cual se ejecuta el comando ssh. Es el nombre registrado en $Conf{RsyncShareName}.
sbin: es la carpeta/archivo a recuperar. Se puede utilizar un punto "." si se desea recuperar todo el contenido.
tar xf –: el comando BackupPC_tarCreate que se ejecuta mediante ssh en el servidor BackupPC genera un archivo tar en stdout. Este tar xf - se ejecuta localmente en el host respaldado y extrae del tar los archivos en el disco local.

Se puede mejorar haciendo un gzip antes de pasar los datos por la red.

Si alguien conoce un método más óptimo, agradezco lo comparta y, si encuentro algo mejor, lo documentaré por aqui.

vagrant destroy no borra la máquina virtual

Hace tiempo que tengo una máquina virtual que no consigo borrar (destroy). El problema nació, según recuerdo, a partir instancia que intenté levantar con un provider en una nube externa que no estaba correctamente configurado y vagrant marcó la instalación como abortada.

En concreto la VM no existe más, la carpeta de Vagrantfile tampoco existe más y el comando vagrant global-status seguía mostrando allí la máquina:

$ vagrant global-status
id       name    provider   state   directory                           
------------------------------------------------------------------------
d0c7c28  default virtualbox aborted /Users/rodolfo/Vagrant/cloud    

The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to

Antes de borrar el directorio con toda la información de vagrant ˜/.vagrant.d encontré que existe el modificador --prune para la opción vagrant-status:

$ vagrant global-status --help
Usage: vagrant global-status

        --prune                      Prune invalid entries.
    -h, --help                       Print this help

Y la ejecución limpió los datos de la máquina virtual inexistente:

$ vagrant global-status
id       name   provider state  directory                           
--------------------------------------------------------------------
There are no active Vagrant environments on this computer! Or,
you haven't destroyed and recreated Vagrant environments that were
started with an older version of Vagrant.

problema solucionado!

cal 9 1752

El comando cal de Unix es un comando estándar del sistema operativo (BSD, Linux, MacOS) que mostrará el mes actual en formato calendario cuando se ejecuta:

$ cal
   September 2016
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

Si el comando cal se ejecuta seguido del año (2016) mostrará los 12 meses de dicho año; y si se ejecuta seguido de número del mes y año entonces mostrará ese mes en particular de dicho año.

De esta forma se pueden encontrar perlas o curiosidades que ha tenido nuestro calendario a lo largo de la historia:

$ cal 9 1752
   September 1752
Su Mo Tu We Th Fr Sa
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

En setiembre de 1752 Gran Bretaña y sus colonias adoptaron oficialmente el calendario Gregoriano y se debió ajustar los días del anterior calendario Juliano. Referencia: Wikipedia Cal (Unix).

Este ajuste se corresponde con el que en octubre de 1582 hiciera el propio Papa Gregorio XIII para que la fiesta de Pascua coincidiera con la llegada de la primavera, y de esta forma al 4 de octubre le siguió el día 15 de octubre y asi, en el año 1583, el equinoccio primaveral (hemisferio norte) tuvo lugar el 21 de marzo.

Otros países se fueron uniendo de a poco: la Alemania Católica Romana, Belgia y los Países Bajos cambiaron a este nuevo calendario en 1584; Hungría en 1587; Dinamarca y la Alemania Protestante en 1704; Suecia en 1753; Japón en 1873; Egipto en 1875; Albania, Bulgaria, Estonia, Letonia, Lituania, Rumania y Turquía cambiaron entre 1912 y 1917; la URSS en 1918; Grecia en 1928 y finalmente China cambió luego de la revolución de 1949.

La adopción paulatina del calendario Gregoriano tiene algunas curiosidades, por ejemplo:

Segun Wikipedia, Miguel de Cervantes falleció el 22 de abril de 1616 a la edad de 68 años y William Shakespeare el 23 de abril del mismo año, pero Cervantes en España estaba bajo el calendario Gregoriano y Shakespeare en Gran Bretaña bajo el Juliano, por lo que la fecha Gregoriana de la muerte de Shakespeare fue el 3 de mayo de 1916.

La Revolución Bolchevique, que puso fin al zarismo en Rusia, se conoce como “Revolución de Octubre”, ya que tuvo lugar entre el 24 y 25 de octubre de 1917. Y el calendario gregoriano se adoptó en Rusia en 1918, al año siguiente. De haber adoptado el calendario gregoriano con anterioridad a la revolución la conoceríamos como la «Revolución de Noviembre».

Leer sobre el Calendario Gregoriano