Skip to main content

PBS Disk Size of Backups

#!/bin/bash
if [ -z "$1" ]; then
    echo "User: $0 <FILE_PATH>" >&2
    echo "Example: $0 /S3cache-1/ns/.../drive-virtio0.img.fidx" >&2
    exit 1
fi

FILE_PATH="$1"

paths=()
while IFS= read -r p; do
    paths+=("$p")
done < <(proxmox-backup-debug inspect file "$FILE_PATH" | tail -n +4 \
			| sed 's/["[:space:]]//g' \
			| awk -v d="${FILE_PATH%%/ns/*}" '{print d "/.chunks/" substr($0,1,4) "/" $0}')

TOTAL_SIZE=$(printf '%s\n' "${paths[@]}"  xargs -r -d '\n' du -cb -- \
				| awk '$2 == "total" { s += $1 } END { print s + 0 }')

# Formatta il totale in modo leggibile
if [ "$TOTAL_SIZE" -ge 1099511627776 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024^4}") TB"
elif [ "$TOTAL_SIZE" -ge 1073741824 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024^3}") GB"
elif [ "$TOTAL_SIZE" -ge 1048576 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024^2}") MB"
elif [ "$TOTAL_SIZE" -ge 1024 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024}") KB"
else
    total_human="$TOTAL_SIZE byte"
fi

echo ""
echo "===================================================="
echo "Riepilogo:"
echo "  File trovati:      ${#paths[@]}"
echo "  Dimensione totale: $total_human ($TOTAL_SIZE byte)"
echo "===================================================="
echo ""


#!/bin/bash
if [ -z "$1" ]; then
    echo "User: $0 <FILE_PATH>" >&2
    echo "Example: $0 /S3cache-1/ns/.../drive-virtio0.img.fidx" >&2
    exit 1
fi
FILE_PATH="$1"
FIRST_FOLDER="${FILE_PATH%%/ns/*}"
TOTAL_SIZE=0
COUNT=0
while read -r line; do
    hash="${line//\"/}"
    TOTAL_SIZE=$((TOTAL_SIZE + $(du -b -- "${FIRST_FOLDER}/.chunks/${hash:0:4}/${hash}" | awk '{print $1}')))
    COUNT=$((COUNT + 1))
done < <(proxmox-backup-debug inspect file "$FILE_PATH" | tail -n +4)

# Formatta il totale in modo leggibile
if [ "$TOTAL_SIZE" -ge 1099511627776 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024^4}") TB"
elif [ "$TOTAL_SIZE" -ge 1073741824 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024^3}") GB"
elif [ "$TOTAL_SIZE" -ge 1048576 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024^2}") MB"
elif [ "$TOTAL_SIZE" -ge 1024 ]; then
    total_human="$(awk "BEGIN {printf \"%.2f\", $TOTAL_SIZE / 1024}") KB"
else
    total_human="$TOTAL_SIZE byte"
fi

echo ""
echo "===================================================="
echo "Riepilogo:"
echo "  File trovati:      $COUNT"
echo "  Dimensione totale: $total_human ($TOTAL_SIZE byte)"
echo "===================================================="
echo ""