feat: harden dashcam transfer tegen flakke SD-lezer + stale-mount cleanup
- dashcam-transfer.py: log echte OSError (shutil.copy2 i.p.v. cp), pre-flight leesbaarheidscheck voor ruimte-wissen, retry (3x) + early-abort (5x), guards op bestandssysteem-calls, WhatsApp GESTOPT bij defecte kaart - dashcam-transfer-mount.sh: skip als service al draait, read-only fsck.exfat health check, %k device-naam doorgeven - dashcam-transfer-cleanup.sh: nieuw - ruimt stale mount op bij udev REMOVE - udev/99-dashcam-trigger.rules: ADD + REMOVE regels met %k - tests: 20 python + 7 mount + 12 cleanup checks - README: architectuur, robuustheid, deploy-instructies
This commit is contained in:
parent
8ef7078ba4
commit
8cc04ea409
9 changed files with 779 additions and 76 deletions
39
dashcam-transfer-cleanup.sh
Executable file
39
dashcam-transfer-cleanup.sh
Executable file
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
# Remove-trigger cleanup for the dashcam SD card.
|
||||
# Called by udev rule 99-dashcam-trigger.rules via systemd-run on
|
||||
# ACTION=="remove" with %k as $1. Unmounts a stale /mnt/sdcard mount and
|
||||
# stops a transfer that can no longer complete.
|
||||
# Idempotent: does nothing when /mnt/sdcard is not mounted or still healthy.
|
||||
logger -t dashcam-transfer "Remove trigger: block device weggevallen"
|
||||
|
||||
src=$(findmnt -no SOURCE /mnt/sdcard 2>/dev/null)
|
||||
if [ -z "$src" ]; then
|
||||
logger -t dashcam-transfer "Remove: /mnt/sdcard niet gemount, niets te doen"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
case "$src" in
|
||||
/*) ;;
|
||||
*) logger -t dashcam-transfer "Remove: onbekende source ($src), niets te doen"; exit 0 ;;
|
||||
esac
|
||||
|
||||
stale=0
|
||||
if [ ! -e "$src" ]; then
|
||||
stale=1
|
||||
elif [ -n "$1" ] && [[ "$src" == *"/$1"* ]]; then
|
||||
stale=1
|
||||
fi
|
||||
|
||||
if [ "$stale" -eq 0 ]; then
|
||||
logger -t dashcam-transfer "Remove: device $src nog aanwezig, mount blijft"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
logger -t dashcam-transfer "Remove: device $src verdwenen — transfer stoppen, mount opruimen"
|
||||
systemctl stop dashcam-transfer.service 2>/dev/null || true
|
||||
sleep 1
|
||||
if ! umount /mnt/sdcard 2>/dev/null; then
|
||||
logger -t dashcam-transfer "Remove: umount mislukt, lazy unmount"
|
||||
umount -l /mnt/sdcard 2>/dev/null || true
|
||||
fi
|
||||
logger -t dashcam-transfer "Remove: stale mount opgeruimd"
|
||||
Loading…
Reference in a new issue