Files
quartz/content/10-19 LIFE/13 TECH SETUP/13.12 PROCESSES/Backups.md
Quartz Syncer d60dc27dac
All checks were successful
Build and Deploy Quartz / build (push) Successful in 20s
Published multiple files
2026-01-20 13:30:42 -07:00

89 lines
2.8 KiB
Markdown

---
publish: true
title: Backups
created: 2026-01-20T13:21:41.646-07:00
modified: 2026-01-20T13:30:33.530-07:00
cssclasses: ""
---
## Local
For me local backups happen in two main ways
1. Backups to a VPS using [[Syncthing]]
2. Backups to a USB stick that lives in my emergency kit
### USB Backups
For USB backups I had a few key requirements
1. They must be encrypted
2. Decryption should be able to take place on any Windows, Mac, or Linux device
3. Decryption must be simple enough that an intermediate user should be able to manage it given instructions (this is in case someone needs this data if I am no longer around to impart my wisdom)
Given these requirements I settled on using [[VeraCrypt]] to create an encrypted container formatted with exFat on a USB drive. This way someone can install the software and, given my key, decrypt the data.
I created the following helper functions to make this processes a little less cumbersome for myself on a monthly basis.
#### Mount/Unmount Container
```bash
vault() {
local mount_base="/run/media/$USER"
local mount_point="$mount_base/vault"
_vault_find() {
local container
container=$(command find "$mount_base" -maxdepth 2 -name "DataVault" -type f 2>/dev/null | head -1)
if [[ -z "$container" ]]; then
echo "Error: DataVault not found under $mount_base" >&2
return 1
fi
echo "$container"
}
case "${1:-}" in
m|mount)
local container
container=$(_vault_find) || return 1
if mountpoint -q "$mount_point" 2>/dev/null; then
echo "Already mounted at $mount_point"
return 0
fi
echo "Found: $container"
sudo mkdir -p "$mount_point"
sudo veracrypt -t --fs-options="uid=$(id -u),gid=$(id -g)" "$container" "$mount_point"
echo "Mounted at $mount_point"
;;
u|unmount)
if ! mountpoint -q "$mount_point" 2>/dev/null; then
echo "Not mounted"
return 0
fi
sudo veracrypt -t -d "$mount_point"
sudo rmdir "$mount_point" 2>/dev/null || true
echo "Unmounted"
;;
*)
echo "Usage: vault {mount|m|unmount|u}"
return 1
;;
esac
}
```
#### Sync Data
```bash
vault-sync() {
local mount_point="/run/media/$USER/vault"
local source="$HOME/DataStore"
if ! mountpoint -q "$mount_point" 2>/dev/null; then
echo "Error: Vault not mounted at $mount_point" >&2
return 1
fi
if [[ ! -d "$source" ]]; then
echo "Error: Source directory $source does not exist" >&2
return 1
fi
rsync -av --delete "$source/" "$mount_point/"
echo "Sync complete"
}
```