#!/bin/bash # Usage: comp [output_fildename] # Check if input folder is provided if [[ -z "$1" ]]; then echo "Usage: comp [output_filename]" exit 1 fi INPUT_FOLDER="$1" # Remove trailing slash from folder name if present INPUT_FOLDER="${INPUT_FOLDER%/}" # Determine output filename if [[ -n "$2" ]]; then OUTPUT_FILE="$2" else OUTPUT_FILE="${INPUT_FOLDER}.tgz" fi # Check if input is a valid directory if [[ ! -d "${INPUT_FOLDER}" ]]; then echo "Error: '${INPUT_FOLDER}' is not a valid directory" exit 1 fi # Get total zie in bytes for progress bar TOTAL_SIZE=$(du -sb "${INPUT_FOLDER}" | awk '{print $1}') # Run compression with progress bar echo "Compressing '${INPUT_FOLDER}' to ' ${OUTPUT_FILE}'..." tar -cf - "${INPUT_FOLDER}" | pv -s "${TOTAL_SIZE}" | pigz > "${OUTPUT_FILE}" echo "Done!"