Voici le dirty hack, sans m'être plongé dans le code de SPIP pour savoir si on peut faire mieux et, comme de bien entendu, vous l'utilisez à vos risques et périls.
#! /bin/bash
#set -x
login=votre_login_free
user=votre_user_spip
password=votre_mdp
sauvegarde=$(tempfile)
count=5
while [ $count -gt 0 ]
do
echo "Attempt at saving a dump for http://$login.free.fr/spip/"
curl -s -S -L -c cookies.txt -D curl.headers -d "session_login_hidden=$user&session_login=$user&session_password=$password&session_remember=oui&essai_login=oui&url=ecrire/?exec=export_all&reinstall=non" "http://$login.free.fr/spip/spip.php?action=cookie" >$sauvegarde
if [ $? -ne 0 ] ; then
echo "problème : vérifier dans $sauvegarde"
exit 1
fi
grep -q 'Sauvegarde réussie.' $sauvegarde
if [ $? -eq 0 ]; then
break
else
let count--
fi
grep -q "NAME\='fichier'" $sauvegarde
if [ $? -eq 0 ]; then
filename=$(grep "NAME\='fichier'" $sauvegarde | sed 's/.*VALUE="//' | sed 's/".*//')
if [ "x$filename" != "x" ]; then
echo "ftp://ftpperso.free.fr/spip/ecrire/data/$filename/ must be created"
echo "hello" | curl -s -S -T - -u $login:$password --ftp-create-dirs ftp://ftpperso.free.fr/spip/ecrire/data/$filename/hello.txt
rm $sauvegarde
sleep 10
fi
else
sleep 5
echo " Sauvegarde pas reussie et pas de fichier a crer demande, on boucle..."
fi
done
if [ $count -gt 0 ]; then
grep -q "La base a été sauvegardée dans <b>ecrire/data/dump.xml</b>" $sauvegarde
if [ $? -eq 0 ]; then
dumpfile=$(grep "La base a été sauvegardée dans <b>ecrire/data/dump.xml</b>" $sauvegarde | sed "s/.* sauvegardée dans <b>//" | sed "s/<\/b>.*//")
if [ "x$dumpfile" != "x" ]; then
echo "OK, dump has been saved by SPIP in ftp://ftpperso.free.fr/spip/$dumpfile"
echo "Waiting 30 seconds"
sleep 30
curl -s -S -O -u $login:$password ftp://ftpperso.free.fr/spip/$dumpfile
date=$(date +%Y-%m-%d-%H-%M-%S)
file=$(basename $dumpfile)
mv $file $date"_$file"
file=$date"_$file"
grep -q '<SPIP version="1.9.1" version_base="1.917" version_archive="1.3">' $file
if [ $? -ne 0 ]; then
echo "problem in $file : wrong xml header"
exit 1
fi
grep -q '</SPIP>' $file
if [ $? -ne 0 ]; then
echo "problem in $file : wrong xml footer"
exit 1
fi
echo "OK, dump downloaded to $file."
ls -l $file
else
echo "problem"
exit 1
fi
else
echo "problem"
exit 1
fi
fi
echo "Purging old dumps if necessary"
ls -1 *_dump.xml | sort -u | head -n-10 | xargs -r rm -v