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


Desde línea de comandos

wget 'https://pad.kefir.red/etherpad/p/respaldarPADdesdeTerminal/export/txt'
Esto va a descargar el archivo con nombre txt


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



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


Lo describo mas en https://alambique.org/-/snippets/1


to-do