Backup script for ToodleDo

3 minute read

Just started using ToodleDo with the GotToDo Android app on my HTC Desire.

There is a rare bug in the app which has deleted all the ToodleDo tasks for a very small number of people. the author of the app is working on a solution at the moment, but in retrospect I should have had a backup plan for this data anyway.

Benny Morrison on the app mailing list sent me a DOS script he used to back up his Toodledo account, and I have hacked it to work under linux (the core functionality comes from Benny - all I did was wrap it up in some linux specific stuff to create the appropriate directories and do some rudimentary checking).

The (short) script is below. I run this from a cron job a few times a day.

Pete

NOTE: script updated 26th July 2011 after ToodleDo redesign

`#!/bin/sh`\
# Script to backup toodledo account

# makes a backup on your local machine and
# sends a copy to a google account of your choice
## CONFIGURATION SECTION
## CHANGE THESE VARIABLES ONLY
#
# Where you want the data stored.
DATADIR=/home/YOUR-NAME-HERE/toodledo-backup/$(date +%Y)/$(date +%m)/$(date +%d)/$(date +%H:%M:%S)
LOGIN="TOODLEDO-LOGIN"
PASS="TOODLEDO-PASSWORD"
# This variable is where you want copies of the backups sent. I use a dedicated gmail account.
ARCHIVEMAIL=ARCHIVE-EMAIL-ADDRESS
#
## END OF CONFIGURATION SECTION
mkdir -p $DATADIR
cd $DATADIR
wget -q --no-check-certificate --keep-session-cookies --save-cookies cookies.txt --post-data "email=$LOGIN&pass=$PASS" https://www.toodledo.com/signin.php
wget --quiet -O Tasks.xml --load-cookies cookies.txt http://www.toodledo.com/tools/xml.php
rm cookies.txt
rm index.php
#
## Check for login errors
if [ -f signin.php ]
then
echo "$0 - ERROR - login not complete.
There is a HIGH RISK that your ToodleDo backup did not complete."
fi
#
## Does the Tasks.xml file look OK ?
if ! egrep -q '' Tasks.xml
then
echo "$0 - ERROR - Problem with Tasks.xml file.
There is a HIGH RISK that your ToodleDo backup did not complete."
fi
## Now mail the file to a google account
/usr/bin/mutt -s "ToodleDo backup - `/bin/date`"   -a Tasks.xml -- $ARCHIVEMAIL < /dev/null

Updat 2011-07-26 23:54:16

IMPORTANT: toodledo changed the location of their php files today with the redesign.

Just add /tools before xml.php

http://www.toodledo.com/tools/xml.php I have modified the main post to reflect this. Pete

Comments

Benny 2010-08-10 17:35:59

Good stuff. Looks like you wrapped it up nicely. Glad I could help. GotToDo and ToodleDo are a powerful combination and there are other features coming that will make people very happy.

Derek 2011-07-13 10:03:00

Hi - is it possible to alter this script so that it prompts for a password instead of storing it as plain text ? If so, please can you post the changes. Thanks!

pete 2011-07-26 23:57:44

Hi Derek. Not tried to do this yet. My initial thought is that you need to have a look at the wget command line.

Hugo 2012-04-18 10:32:16

If you add the "remember" option that’s bind to the checkbox from the signin page you can remember the login credential via a cookie.

The script can ask the password from the command line in a first "init" phase

This method avoid storing the pass in the file or in the command line

#!/bin/sh
#
Script to backup toodledo account
# makes a backup on your local machine and
#
sends a copy to a google account of your choice
## CONFIGURATION SECTION
##
CHANGE THESE VARIABLES ONLY
#
# Where you want the data stored.
rcookie=\".toodledo-remember.cookie\"
scookie=\".toodledo-session.cookie\"
OUT=$(pwd)
init=\"false\"
while
[ $# -gt 0 ]
do
case \"$1\" in
    -init) init=\"true\" ; shift 1 ;;

   -out) OUT=\" $2\"; shift 2 ;;
esac
done
[ ! -w $OUT ] &&
echo \"Impossible d'écrire dans $OUT\" &&  exit 1
cd $OUT
[ !  -e
$rcookie ] && init=\"true\" && echo \"Cookie absent\" 
if [[ "$init\" == \"true\" ]]; then
    [ -e $rcookie ] && rm $rcookie
       read -p \"Enter Login: \" LOGIN
    read -s -p \"Enter Password: \" PASS
       wget -q --no-check-certificate --keep-session-cookies --save-cookies ${rcookie}
    --post-data \"email=$LOGIN&pass=$PASS&remember=on\" https://www.toodledo.com/signin.php
       rm index.php
else
  wget -q --no-check-certificate --keep-session-cookies --save-cookies ${scookie} --load-cookies ${rcookie}  https://www.toodledo.com/signin.php
  sleep 3
  rm index.php
  wget --quiet -O Tasks.xml --load-cookies ${scookie} https://www.toodledo.com/tools/backup.php
  rm ${scookie}
  #
  ## Does the Tasks.xml file look OK ?
  if ! egrep -q 'Toodledo :: XML Backup' Tasks.xml
  then
  echo \"$0 - ERROR - Problem with Tasks.xml file.
  There is a HIGH RISK that your ToodleDo backup did not complete.\"
  exit 1
  fi
fi

Leave a Comment