Filespeedcheck/speedcheck.sh

73 lines
1.9 KiB
Bash

#!/bin/bash
WATCH_DIR="$1"
DURATION="${2:-300}" # Standard: 300 Sekunden (5 min)
TARGET_GB=80
if [ -z "$WATCH_DIR" ]; then
echo "Usage: $0 /pfad/zum/ordner [dauer_in_sekunden]"
exit 1
fi
if [ ! -d "$WATCH_DIR" ]; then
echo "Fehler: Ordner '$WATCH_DIR' existiert nicht."
exit 1
fi
echo "Überwache Ordner: $WATCH_DIR"
echo "Dauer: $DURATION Sekunden"
echo
initial_size=$(du -sb "$WATCH_DIR" | awk '{print $1}')
start_time=$(date +%s)
echo "Live-Überwachung gestartet..."
echo
# Fortschrittsbalken + Live-Statistik
for ((i=0; i<DURATION; i++)); do
current_size=$(du -sb "$WATCH_DIR" | awk '{print $1}')
diff=$((current_size - initial_size))
# Formatierte Größen
diff_fmt=$(numfmt --to=iec $diff)
curr_fmt=$(numfmt --to=iec $current_size)
# Fortschritt
progress=$(( (i * 100) / DURATION ))
bar_len=$((progress / 2))
bar=$(printf "%${bar_len}s" | tr " " "#")
printf "\r[% -50s] %3d%% | Gesamt: %s | Zuwachs: %s" "$bar" "$progress" "$curr_fmt" "$diff_fmt"
sleep 1
done
echo
echo "Überwachung abgeschlossen."
echo
final_size=$(du -sb "$WATCH_DIR" | awk '{print $1}')
bytes_copied=$((final_size - initial_size))
if [ "$bytes_copied" -le 0 ]; then
echo "⚠ Keine neuen Daten gefunden."
exit 0
fi
rate=$(echo "$bytes_copied / $DURATION" | bc -l)
target_bytes=$(echo "$TARGET_GB * 1024 * 1024 * 1024" | bc)
seconds_needed=$(echo "$target_bytes / $rate" | bc -l)
hours=$(printf "%.1f" "$(echo "$seconds_needed / 3600" | bc -l)")
minutes=$(printf "%.0f" "$(echo "$seconds_needed / 60" | bc -l)")
echo "-------------------------------------------"
echo "Zusammenfassung:"
echo "Neue Daten: $(numfmt --to=iec $bytes_copied)"
echo "Durchsatz: $(numfmt --to=iec $rate)/s"
echo
echo "Zeit für $TARGET_GB GB:"
echo "$hours Stunden"
echo " oder ≈ $minutes Minuten"
echo "-------------------------------------------"