72 lines
1.1 KiB
Text
72 lines
1.1 KiB
Text
|
#!/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
|
||
|
|