base-files: sysupgrade: fix streaming backup archives to stdout
Due to previous refactoring in sysupgrade, writing backup archives to
stdout became impossible since the hardcoded gzip output redirection
did not account for the `-` special case filename.
Fix this issue by substituting `-` with `/proc/self/fd/1` in the tar
archive output path variable.
Also remove a redundant `rm -f` of the target file path that occurs
before the file could've possibly been written.
Fixes: #14773
Fixes: https://github.com/openwrt/luci/issues/6961
Fixes: e36cc53092
("base-files: sysupgrade: use tar helper to include installed_packages.txt")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
fbb924abff
commit
6f6406a132
|
@ -241,12 +241,13 @@ create_backup_archive() {
|
||||||
[ "$(rootfs_type)" = "tmpfs" ] && {
|
[ "$(rootfs_type)" = "tmpfs" ] && {
|
||||||
echo "Cannot save config while running from ramdisk." >&2
|
echo "Cannot save config while running from ramdisk." >&2
|
||||||
ask_bool 0 "Abort" && exit
|
ask_bool 0 "Abort" && exit
|
||||||
rm -f "$conf_tar"
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
|
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
|
||||||
ask_bool 0 "Edit config file list" && vi "$CONFFILES"
|
ask_bool 0 "Edit config file list" && vi "$CONFFILES"
|
||||||
|
|
||||||
|
[ "$conf_tar" != "-" ] || conf_tar=""
|
||||||
|
|
||||||
v "Saving config files..."
|
v "Saving config files..."
|
||||||
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
|
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
|
||||||
sed -i -e 's,^/,,' "$CONFFILES"
|
sed -i -e 's,^/,,' "$CONFFILES"
|
||||||
|
@ -272,12 +273,12 @@ create_backup_archive() {
|
||||||
|
|
||||||
# Rest of archive with config files and ending padding
|
# Rest of archive with config files and ending padding
|
||||||
tar c${TAR_V} -C / -T "$CONFFILES"
|
tar c${TAR_V} -C / -T "$CONFFILES"
|
||||||
} | gzip > "$conf_tar"
|
} | gzip > "${conf_tar:-/proc/self/fd/1}"
|
||||||
|
|
||||||
local err=$?
|
local err=$?
|
||||||
if [ "$err" -ne 0 ]; then
|
if [ "$err" -ne 0 ]; then
|
||||||
echo "Failed to create the configuration backup."
|
echo "Failed to create the configuration backup."
|
||||||
rm -f "$conf_tar"
|
[ -f "$conf_tar" ] && rm -f "$conf_tar"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f "$CONFFILES"
|
rm -f "$CONFFILES"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user