-#!/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
-