Initial commit: combine nas_tool, nas_webdav, sync-utils

This commit is contained in:
Gan, Jimmy
2026-02-18 22:59:43 +08:00
commit 526c6a5521
77 changed files with 7898 additions and 0 deletions
+124
View File
@@ -0,0 +1,124 @@
#!/bin/bash
# Fix: Free Space After Deleting Files
# When you delete files but don't see space back, this script fixes it
set -e
echo "=== Fix: Free Space After Deleting Files ==="
echo ""
echo "This script handles the common issue where deleted files don't free up space"
echo "because APFS snapshots are holding onto them."
echo ""
# Check current free space
FREE_SPACE_BEFORE=$(df / | tail -1 | awk '{print $4}')
FREE_SPACE_GB_BEFORE=$(echo "scale=2; $FREE_SPACE_BEFORE / 1024 / 1024" | bc)
echo "Current free space: ${FREE_SPACE_GB_BEFORE}GB"
echo ""
# Check for Time Machine local snapshots
echo "📸 Checking for Time Machine local snapshots..."
TM_SNAPSHOTS=$(tmutil listlocalsnapshots / 2>/dev/null | grep -v "Snapshots for disk" | grep -v "^$")
if [ -n "$TM_SNAPSHOTS" ]; then
echo " Found snapshot(s) that may be holding space:"
echo "$TM_SNAPSHOTS" | sed 's/^/ - /'
echo ""
read -p "Delete these snapshots to free space? (y/n) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo ""
echo "🗑️ Deleting snapshots..."
# Disable local snapshots first (helps with stuck snapshots)
echo " 1. Disabling local snapshots..."
sudo tmutil disablelocal 2>/dev/null || true
sleep 2
# Delete each snapshot
echo " 2. Deleting snapshots..."
echo "$TM_SNAPSHOTS" | while read snapshot; do
if [ -n "$snapshot" ]; then
# Extract date part from snapshot name
SNAP_DATE=$(echo "$snapshot" | sed 's/.*\.\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}\)\.backup/\1/')
if [ -n "$SNAP_DATE" ]; then
echo " Deleting: $snapshot"
sudo tmutil deletelocalsnapshots "$SNAP_DATE" 2>/dev/null && \
echo " ✓ Deleted" || \
echo " ⚠️ Could not delete (may need restart)"
fi
fi
done
# Try to thin all snapshots
echo " 3. Thinning all local snapshots..."
sudo tmutil thinlocalsnapshots / 1000000000 4 2>/dev/null || true
# Re-enable local snapshots
echo " 4. Re-enabling local snapshots..."
sleep 2
sudo tmutil enablelocal 2>/dev/null || true
echo " ✓ Snapshot cleanup completed"
fi
else
echo " ✓ No Time Machine snapshots found"
fi
echo ""
# Force purge of memory and disk caches
echo "🧹 Purging system caches..."
if command -v purge &> /dev/null; then
sudo purge
echo " ✓ Purge completed"
else
echo " ⚠️ Purge command not available"
fi
echo ""
# Wait a moment for system to update
echo "⏳ Waiting for system to update disk space..."
sleep 5
# Check new free space
FREE_SPACE_AFTER=$(df / | tail -1 | awk '{print $4}')
FREE_SPACE_GB_AFTER=$(echo "scale=2; $FREE_SPACE_AFTER / 1024 / 1024" | bc)
FREED_GB=$(echo "scale=2; $FREE_SPACE_GB_AFTER - $FREE_SPACE_GB_BEFORE" | bc)
echo ""
echo "=== Results ==="
echo " Before: ${FREE_SPACE_GB_BEFORE}GB free"
echo " After: ${FREE_SPACE_GB_AFTER}GB free"
if (( $(echo "$FREED_GB > 0" | bc -l) )); then
echo " ✅ Freed: ${FREED_GB}GB"
else
echo " ⚠️ No space freed yet"
fi
echo ""
if (( $(echo "$FREED_GB < 15" | bc -l) )) && (( $(echo "$FREE_SPACE_GB_AFTER < 5" | bc -l) )); then
echo "⚠️ If space still not freed, try these steps:"
echo ""
echo "1. **Restart your Mac** - This is often the most effective solution."
echo " Snapshots are sometimes only released after a restart."
echo ""
echo "2. Check if Time Machine is trying to connect:"
echo " - Open System Settings → Time Machine"
echo " - If it says 'Connecting...', wait for it to finish or disconnect"
echo " - Then try deleting snapshots again"
echo ""
echo "3. Manually delete the snapshot after disabling Time Machine:"
echo " sudo tmutil disablelocal"
echo " sudo tmutil deletelocalsnapshots <date>"
echo " sudo tmutil enablelocal"
echo ""
echo "4. Use macOS Storage Management:"
echo " Apple Menu → About This Mac → Storage → Manage"
echo " This tool can identify and remove large system files"
echo ""
fi
echo ""