Respaldar PADs desde terminal
20201122
Durante el hackmitin 2020 presente en línea un nodo ninja para mostrar como hacer respaldos de los documentos colaborativos de algún etherpad desde la consola de linux.
Y a petición de master lo dejo documentado.
Manualmente
Tenemos un pad por ejemplo https://pad.kefir.red/etherpad/p/respaldarPADdesdeTerminal
- Para exportarlo vamos del lado derecho del navegador y existe un icono que parecen dos flechas.
- Al presionar emerge un recuadro.
- Hacer click sobre «Texto sin formato»
- Aparece una ventana para indicar donde se guardara.
Desde línea de comandos
- Abrir una terminal y ejecutar
wget 'https://pad.kefir.red/etherpad/p/respaldarPADdesdeTerminal/export/txt'
Esto va a descargar el archivo con nombre txt
- Para que lo guarde con un nombre se usa
wget 'https://pad.kefir.red/etherpad/p/respaldarPADdesdeTerminal/export/txt' -O salida.txt
Script inicial
Para automatizar un poco esta tarea vamos a crear un script simpre
#!/bin/bash
PADnombre="$1";
PADservidor="pad.kefir.red";
wget "https://${PADservidor}/etherpad/p/${PADnombre}/export/txt" -O ${PADnombre}.md
- se define que la variable PADnombre pasa como el argumento uno
- se define que la variable PADservidor es el host
- se remplazan las variables en wget
Script versionado
El script anterior remplaza el contenido local siempre que lo ejecutamos, seria mas conveniente tener diferentes versiones.
Para ello se propone un proceso que genere un contador por cada descarga y adicionalmente comparar las descargas para evitar tener dos archivos con el mismo contenido.
#!/bin/bash
PADnombre="$1";
PADservidor="pad.kefir.red";
if [[ -z "${PADnombre}" ]]; then echo "necesita un nombre"; exit 1; fi;
act=$(ls -1 ${PADnombre}-v* 2>/dev/null | sed -e "s/${PADnombre}-v//" -e "s/.md//" | tail -1);
if [[ -z "$act" ]]; then act="00"; fi;
max=$(seq -w $act 99 | head -2 | tail -1);
wget "https://${PADservidor}/etherpad/p/${PADnombre}/export/txt" -O ${PADnombre}-v${max}.md
if [[ $? -ne 0 ]]; then echo "ERROR: No se puede obtener el anterior pad"; exit 1; fi;
if [[ -e ${PADnombre}-v${max}.md ]]; then
md5a=$(md5sum ${PADnombre}-v${act}.md | cut -d" " -f1)
md5b=$(md5sum ${PADnombre}-v${max}.md | cut -d" " -f1)
if [[ $md5a == $md5b ]]
then
rm ${PADnombre}-v${max}.md
fi
fi
- Se valida que pase un argumento
- Se obtiene la versión actual o si no existe se define como 00
- Se genera el numero siguiente
- Se descarga el archivo
- Se compara la versión anterior con la actual para identificar si son iguales
Lo describo mas en https://alambique.org/-/snippets/1
to-do
- incluir git
- una interfaz gráfica
