Files

33 lines
1.4 KiB
Markdown
Raw Permalink Normal View History

# Deployment bits that live outside the app
## `org.waterschurch.checklist-drive-backup.plist`
The LaunchAgent that runs the nightly off-site backup. It belongs in
`~/Library/LaunchAgents/` on **one** always-on Mac — currently the ingest Mac
(`NA-Ingest`, account `Studio`). Install with:
```bash
cp deploy/org.waterschurch.checklist-drive-backup.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/org.waterschurch.checklist-drive-backup.plist
```
**The path in it matters more than it looks.** It points at `~/checklist-app`, not
`~/Documents/…`, and that is not cosmetic: macOS TCC does not let `launchd` execute
anything inside `~/Documents`, `~/Desktop` or `~/Downloads`. When the project lived in
`~/Documents` the agent failed instantly every night with
```
/bin/bash: …/backup-to-drive.sh: Operation not permitted
```
logging nothing, for eight days, because the script never started. Keep the checkout
outside those folders on any machine that runs this agent.
The same restriction applies one level down: `launchd` can stat a named file under
`~/Library/CloudStorage` but cannot list the directory, which is why
`backup-to-drive.sh` checks explicit filenames instead of globbing.
A LaunchAgent only fires while that user is logged in. If the Mac is asleep at 04:15,
launchd runs the job shortly after it wakes, so a missed night self-heals — but a Mac
that is off, or logged out, backs nothing up and says nothing.