Initial commit

This commit is contained in:
Pipo 2025-09-24 17:18:02 +02:00
commit 0cd1cbb132
7 changed files with 148 additions and 0 deletions

View file

@ -0,0 +1,43 @@
#!/bin/zsh
set -euo pipefail
LOGF="/var/log/snapclean.log"
log() { print -r -- "$(date '+%F %T') $*" >> "$LOGF"; }
is_running() {
/usr/bin/tmutil status 2>/dev/null | /usr/bin/grep -Eq '"Running" = 1|Running = 1'
}
wait_until_tm_idle() {
local i=0
while is_running; do
sleep 2
(( i++ ))
[[ $i -gt 150 ]] && log "Timeout: TM still running. Waiting until it's finished." && break
done
}
delete_all_snapshots() {
log "Deletes all local Snapshots at / …"
/usr/bin/tmutil deletelocalsnapshots / || true
log "Finished deleting."
}
# Make sure logfile exists
[[ -f "$LOGF" ]] || { sudo touch "$LOGF"; sudo chmod 644 "$LOGF"; }
while IFS= read -r line; do
if print -r -- "$line" | /usr/bin/grep -q \
"com.apple.TimeMachine:LocalSnapshotManagement] Created Time Machine local snapshot"; then
log "Event erkannt: $line"
# Short break until the snapshot is in index
sleep 2
# Waiting until TM is finished
wait_until_tm_idle
# delete all local snapshots
delete_all_snapshots
fi
done < <(
/usr/bin/log stream --style syslog --level info \
--predicate 'process == "backupd" AND subsystem == "com.apple.TimeMachine"'
)

17
scripts/install.sh Normal file
View file

@ -0,0 +1,17 @@
#!/bin/zsh
set -euo pipefail
PLIST_SRC="$(cd -- "$(dirname "$0")/.." && pwd)/launchd/com.snapclean.listener.plist"
SCRIPT_SRC="$(cd -- "$(dirname "$0")/.." && pwd)/scripts/auto-snapclean-listener.sh"
sudo install -m 0755 "$SCRIPT_SRC" /usr/local/bin/auto-snapclean-listener.sh
sudo install -m 0644 "$PLIST_SRC" /Library/LaunchDaemons/com.snapclean.listener.plist
sudo touch /var/log/snapclean.log /var/log/snapclean.out /var/log/snapclean.err
sudo chmod 644 /var/log/snapclean.*
# (re)load
sudo launchctl unload /Library/LaunchDaemons/com.snapclean.listener.plist 2>/dev/null || true
sudo launchctl load -w /Library/LaunchDaemons/com.snapclean.listener.plist
sudo launchctl list | grep snapclean || true
echo "✅ snapcleaner installed."

6
scripts/uninstall.sh Normal file
View file

@ -0,0 +1,6 @@
#!/bin/zsh
set -euo pipefail
sudo launchctl unload /Library/LaunchDaemons/com.snapclean.listener.plist 2>/dev/null || true
sudo rm -f /Library/LaunchDaemons/com.snapclean.listener.plist
sudo rm -f /usr/local/bin/auto-snapclean-listener.sh
echo "✅ snapcleaner deleted. Logs stay in /var/log/snapclean.*"