Skip to content

Commit 41a4e84

Browse files
Tanarrinachoparker
authored andcommitted
nc-restore: Check for free space in $TMPDIR before extracting tar file
1 parent 29429f0 commit 41a4e84

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

bin/ncp/BACKUPS/nc-restore.sh

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,20 @@ cleanup(){ local RET=$?; echo "Cleanup..."; rm -rf "${TMPDIR}"; trap "" EXIT; e
3737
trap cleanup INT TERM HUP ERR EXIT
3838
rm -rf "$TMPDIR" && mkdir -p "$TMPDIR"
3939
40+
[[ "$BACKUPFILE" =~ ".tar.gz" ]] && compress_arg="-I pigz"
41+
42+
# CHECK FREE SPACE IN $TMPDIR
43+
echo "check free space..." # allow at least ~100 extra MiB
44+
extractedsize=$(tar $compress_arg -tvf "$BACKUPFILE" | awk '{s+=$3} END{printf "%.0f", (s/1024)}') # Size of extracted files in "KB"
45+
size=$(($extractedsize + 100*1024))
46+
free=$( df "$TMPDIR" | tail -1 | awk '{ print $4 }' )
47+
[ $size -ge $free ] && {
48+
echo "free space check failed. Need $size KB in $TMPDIR";
49+
exit 1;
50+
}
51+
4052
# EXTRACT FILES
4153
echo "extracting backup file $BACKUPFILE..."
42-
43-
[[ "$BACKUPFILE" =~ ".tar.gz" ]] && compress_arg="-I pigz"
4454
tar $compress_arg -xf "$BACKUPFILE" -C "$TMPDIR" || exit 1
4555
4656
## SANITY CHECKS

0 commit comments

Comments
 (0)