# Client storage Two folders per client, two different tools. That was always the design. Making the storage side a git repo was the mistake. `Clients/*` is storage: mockups, PDFs, screenshots, day folders, comms drafts. Back it up with rclone. Never commit it. `spim-staging/*` and `Workers/*` are code: what the editor reads, what deploys. Those stay in git. If you cannot say which of those two a folder is, stop. Do not `git init` or `git add` under `Clients/`. Untracked files there are the designed state, not a finding. Provenance lives in the filename — date-stamped day folders — not in git history. Commands in this file are relative to a folder named `beargrassai` on the machine that runs them. If you do not have that folder, you cannot run the commands. Do not invent a home path. ## Who you are while you run it You are moving bytes to a second disk and to offsite, or you are about to run a git command near a client folder. Git's value on photographs, video, and PDFs (diff, blame, merge, bisect) is zero. Its costs — dirty-tree alarms, agent attention, a huge binary history — get paid daily if you pretend otherwise. One measured folder was ten gigabytes of working files with a two-hundred-megabyte git storing binary deltas of formats that do not delta. ## Why the names must not drift One namespace name, two destinations. Same folder name on the working copy, on the local secondary, and on the offsite remote, so there is one thing to remember and nothing to look up. The destinations (which volume, which remote) are on equipment, not in this file. A hand-curated cloud tree with different names is a different namespace. Do not write there. Do not keep a translation table. A rule with nothing to maintain cannot drift. ## The command `copy`, never `sync`. `sync` deletes on the destination whatever vanished locally. Point it wrong once and it mirrors a mistake upward. `copy` is additive and cannot delete. Check that the secondary volume is mounted first. If it is not, rclone creates a folder on the boot disk, reports success, and you have a backup you do not actually have. ``` cd Clients/ rclone copy . \ --exclude '.git/**' --exclude 'node_modules/**' --exclude '.DS_Store' \ --transfers 8 --checkers 16 --stats-one-line rclone copy . \ --exclude '.git/**' --exclude 'node_modules/**' --exclude '.DS_Store' \ --transfers 8 --checkers 16 --stats 30s ``` Count files locally, on the secondary, and offsite before you call it backed up. Back up and verify counts before any `.git` under a storage folder is moved to Trash. A GitHub remote for a storage folder is an incomplete archive. ## Temptations (refuse these) - `rclone sync` - `git init` or `git add` under `Clients/` - Raising a data-loss alarm about untracked files, no remote, or a dirty tree in that folder - Writing into the hand-curated cloud namespace because the names look similar - Running the copy while the secondary volume is unmounted - Treating a git remote as the backup