From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sat, 2 Apr 2005 21:13:50 +0000 (+0000)
Subject: add simple scripts for backup/restore
X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/fc3037d051e0a0c885635055a55f4d73ef717b2c

add simple scripts for backup/restore


git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@534 3c298f89-4303-0410-b956-a3cf2f4a3e73
---

diff --git a/target/default/target_skeleton/sbin/backup b/target/default/target_skeleton/sbin/backup
new file mode 100755
index 000000000..cdf41b946
--- /dev/null
+++ b/target/default/target_skeleton/sbin/backup
@@ -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/target/default/target_skeleton/sbin/restore b/target/default/target_skeleton/sbin/restore
new file mode 100755
index 000000000..6b5876cc1
--- /dev/null
+++ b/target/default/target_skeleton/sbin/restore
@@ -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
+