From 8af00f038e9654338013f792ceb34b4e2007e60a Mon Sep 17 00:00:00 2001 From: TomiEckert Date: Mon, 2 Mar 2026 11:07:44 +0100 Subject: [PATCH] feat: Add pigz support for parallel tar compression if available. --- hanatool.sh | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/hanatool.sh b/hanatool.sh index 589382d..6ed4ada 100644 --- a/hanatool.sh +++ b/hanatool.sh @@ -30,6 +30,13 @@ DRY_RUN=false NTFY_TOKEN="" IMPORT_REPLACE=false +# Detect pigz for parallel compression +if command -v pigz &>/dev/null; then + USE_PIGZ=true +else + USE_PIGZ=false +fi + # --- Help/Usage Function --- usage() { echo "SAP HANA Schema and Tenant Management Tool" @@ -228,9 +235,17 @@ case "$ACTION" in TAR_EXIT_CODE=0 if [[ "$DRY_RUN" == "true" ]]; then - echo "[DRY RUN] Would execute tar: tar -czf \"$ARCHIVE_FILE\" -C \"$backup_target_dir\" ." + if [[ "$USE_PIGZ" == "true" ]]; then + echo "[DRY RUN] Would execute tar (pigz): tar -I \"pigz -p $THREADS\" -cf \"$ARCHIVE_FILE\" -C \"$backup_target_dir\" ." + else + echo "[DRY RUN] Would execute tar: tar -czf \"$ARCHIVE_FILE\" -C \"$backup_target_dir\" ." + fi else - tar -czf "$ARCHIVE_FILE" -C "$backup_target_dir" . + if [[ "$USE_PIGZ" == "true" ]]; then + tar -I "pigz -p $THREADS" -cf "$ARCHIVE_FILE" -C "$backup_target_dir" . + else + tar -czf "$ARCHIVE_FILE" -C "$backup_target_dir" . + fi TAR_EXIT_CODE=$? fi @@ -304,9 +319,17 @@ case "$ACTION" in TAR_EXIT_CODE=0 if [[ "$DRY_RUN" == "true" ]]; then - echo "[DRY RUN] Would execute tar: tar -czf \"$ARCHIVE_FILE\" -C \"$(dirname "$EXPORT_DIR")\" \"$(basename "$EXPORT_DIR")\"" + if [[ "$USE_PIGZ" == "true" ]]; then + echo "[DRY RUN] Would execute tar (pigz): tar -I \"pigz -p $THREADS\" -cf \"$ARCHIVE_FILE\" -C \"$(dirname "$EXPORT_DIR")\" \"$(basename "$EXPORT_DIR")\"" + else + echo "[DRY RUN] Would execute tar: tar -czf \"$ARCHIVE_FILE\" -C \"$(dirname "$EXPORT_DIR")\" \"$(basename "$EXPORT_DIR")\"" + fi else - tar -czf "$ARCHIVE_FILE" -C "$(dirname "$EXPORT_DIR")" "$(basename "$EXPORT_DIR")" + if [[ "$USE_PIGZ" == "true" ]]; then + tar -I "pigz -p $THREADS" -cf "$ARCHIVE_FILE" -C "$(dirname "$EXPORT_DIR")" "$(basename "$EXPORT_DIR")" + else + tar -czf "$ARCHIVE_FILE" -C "$(dirname "$EXPORT_DIR")" "$(basename "$EXPORT_DIR")" + fi TAR_EXIT_CODE=$? fi