https://vt.tiktok.com/ZSVEVgVFJ/
Bash:
#!/bin/bash
# One-off manual cleanup run with before/after size accounting.
# Usage: nohup ./cleanup_joined.sh > /dev/null 2>&1 & disown
# Then: tail -f /home/ubuntu/Kaggle/cleanup.log
DRIVE_CLEAN_ROOT="gdrive:AmdaPaid"
JOINED_MIN_AGE="24h"
LOG_FILE="/home/ubuntu/Kaggle/cleanup.log"
echo "[$(date)] 📏 Measuring /Joined/ size before cleanup..." >> "$LOG_FILE"
BEFORE_RAW=$(rclone size "$DRIVE_CLEAN_ROOT" --include "*/Joined/**" --json 2>>"$LOG_FILE")
BEFORE_BYTES=$(echo "$BEFORE_RAW" | grep -oP '"bytes":\s*\K[0-9]+')
BEFORE_COUNT=$(echo "$BEFORE_RAW" | grep -oP '"count":\s*\K[0-9]+')
echo "[$(date)] 📏 Before: ${BEFORE_COUNT:-0} files, $(numfmt --to=iec --suffix=B ${BEFORE_BYTES:-0})" >> "$LOG_FILE"
echo "[$(date)] 🧹 Deleting /Joined/ files ${JOINED_MIN_AGE}+ old (permanent, not trash)..." >> "$LOG_FILE"
rclone delete "$DRIVE_CLEAN_ROOT" \
--min-age "$JOINED_MIN_AGE" \
--include "*/Joined/**" \
--drive-use-trash=false \
-v >> "$LOG_FILE" 2>&1
echo "[$(date)] 📏 Measuring /Joined/ size after cleanup..." >> "$LOG_FILE"
AFTER_RAW=$(rclone size "$DRIVE_CLEAN_ROOT" --include "*/Joined/**" --json 2>>"$LOG_FILE")
AFTER_BYTES=$(echo "$AFTER_RAW" | grep -oP '"bytes":\s*\K[0-9]+')
AFTER_COUNT=$(echo "$AFTER_RAW" | grep -oP '"count":\s*\K[0-9]+')
echo "[$(date)] 📏 After: ${AFTER_COUNT:-0} files, $(numfmt --to=iec --suffix=B ${AFTER_BYTES:-0})" >> "$LOG_FILE"
FREED_BYTES=$(( ${BEFORE_BYTES:-0} - ${AFTER_BYTES:-0} ))
FREED_COUNT=$(( ${BEFORE_COUNT:-0} - ${AFTER_COUNT:-0} ))
echo "[$(date)] ✅ CLEANUP SUMMARY: freed $(numfmt --to=iec --suffix=B $FREED_BYTES) across $FREED_COUNT files." >> "$LOG_FILE"