export CONF_BACKUP_LIST=0
export CONF_BACKUP=
export CONF_RESTORE=
+export IGNORE_MINOR_COMPAT=0
export NEED_IMAGE=
export HELP=0
export FORCE=0
-F|--force) export FORCE=1;;
-T|--test) export TEST=1;;
-h|--help) export HELP=1; break;;
+ --ignore-minor-compat-version) export IGNORE_MINOR_COMPAT=1;;
-*)
echo "Invalid option: $1" >&2
exit 1
Verify image and config .tar.gz but do not actually flash.
-F | --force
Flash image even if image checks fail, this is dangerous!
+ --ignore-minor-compat-version
+ Flash image even if the minor compat version is incompatible.
-q less verbose
-v more verbose
-h | --help display this help
list_conffiles | while read file csum; do
[ -r "$file" ] || continue
- echo "${csum} ${file}" | sha256sum -sc - || echo "$file"
+ echo "${csum} ${file}" | busybox sha256sum -sc - || echo "$file"
done
}
+list_static_conffiles() {
+ local filter=$1
+
+ find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
+ /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
+ \( -type f -o -type l \) $filter 2>/dev/null
+}
+
add_conffiles() {
local file="$1"
- ( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
- /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
- \( -type f -o -type l \) $find_filter 2>/dev/null;
- list_changed_conffiles ) | sort -u > "$file"
+
+ ( list_static_conffiles "$find_filter"; list_changed_conffiles ) |
+ sort -u > "$file"
return 0
}
# backup files from /etc/sysupgrade.conf and /lib/upgrade/keep.d, but
# ignore those aready controlled by opkg conffiles
- find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
- /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
- \( -type f -o -type l \) 2>/dev/null | sort -u |
+ list_static_conffiles | sort -u |
grep -h -v -x -F -f $conffiles > "$keepfiles"
# backup conffiles, but only those changed if '-u'
do_save_conffiles() {
local conf_tar="$1"
- [ -z "$(rootfs_type)" ] && {
+ [ "$(rootfs_type)" = "tmpfs" ] && {
echo "Cannot save config while running from ramdisk." >&2
ask_bool 0 "Abort" && exit
rm -f "$conf_tar"
v "Saving config files..."
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
- tar c${TAR_V}zf "$conf_tar" -T "$CONFFILES" 2>/dev/null
- if [ "$?" -ne 0 ]; then
+ sed -i -e 's,^/,,' "$CONFFILES"
+ tar c${TAR_V}zf "$conf_tar" -C / -T "$CONFFILES"
+ local err=$?
+ if [ "$err" -ne 0 ]; then
echo "Failed to create the configuration backup."
rm -f "$conf_tar"
- exit 1
fi
[ "$UMOUNT_ETCBACKUP_DIR" -eq 1 ] && {
rm -rf "$RAMFS"
}
rm -f "$CONFFILES"
+
+ return "$err"
}
if [ $CONF_BACKUP_LIST -eq 1 ]; then
if [ -n "$CONF_BACKUP" ]; then
do_save_conffiles "$CONF_BACKUP"
- exit $?
+ exit
fi
if [ -n "$CONF_RESTORE" ]; then
fi
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
+ v "Restoring config files..."
tar -C / -x${TAR_V}zf "$CONF_RESTORE"
exit $?
fi
get_image "$CONF_IMAGE" "cat" > "$CONF_TAR"
export SAVE_CONFIG=1
elif ask_bool $SAVE_CONFIG "Keep config files over reflash"; then
- [ $TEST -eq 1 ] || do_save_conffiles "$CONF_TAR"
+ [ $TEST -eq 1 ] || do_save_conffiles "$CONF_TAR" || exit
export SAVE_CONFIG=1
else
[ $TEST -eq 1 ] || rm -f "$CONF_TAR"