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 &eacute;t&eacute; sauvegard&eacute;e dans <b>ecrire/data/dump.xml</b>" $sauvegarde
  if [ $? -eq 0 ]; then
      dumpfile=$(grep "La base a &eacute;t&eacute; sauvegard&eacute;e dans <b>ecrire/data/dump.xml</b>" $sauvegarde | sed "s/.* sauvegard&eacute;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