diff --git a/ChangeLog b/ChangeLog
index 1af0e2a8c0c85c78d7e6de849b7b74a4253917ab..7639b5ff5fb38f95f17c16e384b65cb2359f53b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-09-23  Per Cederqvist  <ceder@ryttargardskyrkan.se>
+
+	Initial support for restoring backups.
+	* lysrdiff-restore: Initial commit of a script that can restore a
+	single task in a reasonably controlled manner.
+
 2009-08-19  Per Cederqvist  <ceder@ryttargardskyrkan.se>
 
 	Updated the config for Ryttargardskyrkan.
diff --git a/lysrdiff-restore b/lysrdiff-restore
new file mode 100755
index 0000000000000000000000000000000000000000..86be7fda7f96f45fa00d50c8b327f2792acf8719
--- /dev/null
+++ b/lysrdiff-restore
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# Do a complete restore of a single task.
+
+if [ $# != 6 ]
+then
+    usage
+    exit 1
+fi
+
+disk="$1"
+part="$2"
+lysrdiffpart="$1/$2"
+category="$3"
+subcategory="$4"
+server="$5"
+serverpath="$6"
+
+remoterdiff=/opt/LYSrdiff/bin/rdiff-backup
+
+lysrdiff="/lysrdiff/$disk/perm/$part/lysrdiff"
+base="$lysrdiff/backups/$category/$subcategory"
+files="$base"/files
+lockdir="$base"/lock
+
+mkdir "$lockdir" || exit 1
+
+unset SSH_ASKPASS
+unset SSH_AUTH_SOCK
+
+schema="ssh -o BatchMode=yes -o ServerAliveInterval=120"
+schema="$schema -a -k -x -i /root/.ssh/backupkey"
+schema="$schema %s $remoterdiff --server"
+
+rdiff-backup --remote-schema "$schema" --null-separator \
+    -r now "$files" "$server"::"$serverpath"
+
+rmdir "$lockdir"