55 lines
1.6 KiB
Markdown
55 lines
1.6 KiB
Markdown
# pobsync
|
|
|
|
`pobsync` is a pull-based backup tool for sysadmins.
|
|
It creates rsync-based snapshots with hardlinking (`--link-dest`) and stores them centrally on a backup server.
|
|
|
|
Backups are pulled over SSH, not pushed, and are designed to be run from cron or manually.
|
|
|
|
* * *
|
|
## Design overview
|
|
|
|
* Runtime, config, logs and state live under `/opt/pobsync`
|
|
* Backup data itself is stored under a configurable `backup_root` (e.g. `/srv/backups`)
|
|
* Two snapshot types:
|
|
* scheduled
|
|
Participates in retention pruning (daily / weekly / monthly / yearly)
|
|
* manual
|
|
Kept outside the scheduled prune chain, defaults to hardlinking from the latest scheduled snapshot
|
|
* Minimal dependencies (currently only `PyYAML`)
|
|
|
|
* * *
|
|
## Requirements
|
|
|
|
* Python 3.11+
|
|
* `rsync`
|
|
* `ssh`
|
|
* Root or sudo access on the backup server
|
|
* SSH keys already configured between backup server and remotes
|
|
|
|
* * *
|
|
## Installation (canonical runtime under /opt/pobsync, no venv)
|
|
|
|
This assumes you are installing as root or via sudo.
|
|
|
|
1) Clone the repo
|
|
|
|
git clone https://code.hosting.hippogrief.nl/hippogrief/pobsync.git
|
|
cd pobsync
|
|
|
|
2) Deploy the runtime into `/opt/pobsync` (copies code into `/opt/pobsync/lib` and installs `/opt/pobsync/bin/pobsync`)
|
|
|
|
sudo ./scripts/deploy --prefix /opt/pobsync
|
|
|
|
3) Initialize runtime layout and global config
|
|
|
|
sudo /opt/pobsync/bin/pobsync install --backup-root /mnt/backups/pobsync
|
|
sudo /opt/pobsync/bin/pobsync doctor
|
|
|
|
## Updating
|
|
|
|
cd /path/to/pobsync
|
|
git pull
|
|
sudo ./scripts/deploy --prefix /opt/pobsync
|
|
sudo /opt/pobsync/bin/pobsync doctor
|
|
|