add simple scripts for backup/restore
authorFelix Fietkau <nbd@openwrt.org>
Sat, 2 Apr 2005 21:13:50 +0000 (21:13 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 2 Apr 2005 21:13:50 +0000 (21:13 +0000)
SVN-Revision: 534

openwrt/target/default/target_skeleton/sbin/backup [new file with mode: 0755]
openwrt/target/default/target_skeleton/sbin/restore [new file with mode: 0755]

diff --git a/openwrt/target/default/target_skeleton/sbin/backup b/openwrt/target/default/target_skeleton/sbin/backup
new file mode 100755 (executable)
index 0000000..cdf41b9
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+for param in $*; do
+       case "$param" in
+               -n)
+                       SAVE_NVRAM=y
+                       ;;
+               *)
+                       OUTPUT_FILE="$param"
+       esac
+done
+
+if [ "$OUTPUT_FILE" = "-" ]; then
+       echo "Writing backup to stdout.." >&2
+elif [ "$OUTPUT_FILE" = "" ]; then
+       echo "No output file."
+else
+       echo "Writing backup to $OUTPUT_FILE" >&2
+       exec > "$OUTPUT_FILE"
+fi
+
+echo __FILELIST__
+find /etc -type f > /tmp/.wlbackup_files
+cat /tmp/.wlbackup_files
+
+echo __IPKG__
+cat /etc/ipkg.conf
+
+if [ "$1" = "-n" ]; then
+       echo __NVRAM__
+       nvram show 2>/dev/null
+fi
+
+echo __PACKAGES__
+grep '^Package:' /usr/lib/ipkg/status | cut -d' ' -f2
+
+echo __FILES__
+tar -T /tmp/.wlbackup_files -cz 2>/dev/null
+rm -f /tmp/.wlbackup_files
diff --git a/openwrt/target/default/target_skeleton/sbin/restore b/openwrt/target/default/target_skeleton/sbin/restore
new file mode 100755 (executable)
index 0000000..6b5876c
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/sh
+for param in $*; do
+       case "$param" in
+               *)
+                       INPUT_FILE="$param"
+       esac
+done
+
+if [ "$INPUT_FILE" = "-" ]; then
+       echo "Reading backup from stdin..." >&2
+elif [ "$INPUT_FILE" = "" ]; then
+       echo "No input file."
+else
+       echo "Reading backup from $INPUT_FILE" >&2
+       exec < "$INPUT_FILE"
+fi
+
+process_line () {
+       case "$SECTION" in
+               ipkg)
+                       echo "$line" >> /etc/ipkg.conf
+                       ;;
+               nvram)
+                       echo nvram set "$line"
+                       ;;
+               package)
+                       if grep "^Package: $line" /usr/lib/ipkg/status 2>&1 > /dev/null; then
+                               echo Package "$line" already installed.
+                       else
+                               ipkg install "$line"
+                       fi
+                       ;;
+               file)
+                       rm -f "$line"
+                       ;;
+       esac
+}
+
+while true; do
+       read line
+       case "$line" in
+               __IPKG__)
+                       SECTION=ipkg
+                       echo "Restoring /etc/ipkg.conf"
+                       rm -f /etc/ipkg.conf
+                       ;;
+               __NVRAM__)
+                       SECTION=nvram
+                       echo "Restoring nvram"
+                       ;;
+               __PACKAGES__)
+                       SECTION=package
+                       echo "Restoring packages"
+                       ipkg update
+                       ;;
+               __FILELIST__)
+                       SECTION=file
+                       echo "Deleting old files"
+                       ;;
+               __FILES__)
+                       echo "Restoring /etc"
+                       tar -C / -xvz
+                       echo "Restore complete."
+                       exit 0
+                       ;;
+               *)
+                       process_line;
+                       ;;
+       esac
+done
+