Lazy8Web is a free web application for basic bookkeeping tasks. I use it myself for the community where I live and I can really recommend it.
However, I needed to add a way to do backups. There is a function to export all data to XML but you must be logged on to do that and the authentication system doesn’t allow just using wget with username/password.
To automate the process I wrote the following little snippet that I run as a cron job. It logs onto the site, downloads the data and saves it to a file with the current date and time as part of the filename.
#!/usr/local/bin/ruby # # Author: Martin Bergek (http://www.spotwise.com) # Dependencies: Ruby, Mechanize (http://mechanize.rubyforge.org) # require 'rubygems' require 'mechanize' # Make changes here base_url = 'http://www.example.com' username = 'user' password = 'password' log_folder = '/home/user/' # No changes below this line # Login agent = Mechanize.new page = agent.get(base_url + '/index.php?r=site/login') form = page.forms.first form['LoginForm[username]'] = username form['LoginForm[password]'] = password page = agent.submit(form, form.buttons.first) # Get backup for all companies xml = agent.get_file(base_url = '/index.php?r=company/exportAll') # Save backup t = Time.now logfile = log_folder + t.strftime("%Y%m%d-%H%M%S.xml") File.open(logfile, 'w') {|f| f.write(xml) }