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