2.4 KiB
pobsync
pobsync is a pull-based backup tool that runs on a central backup server and pulls data from remote servers via rsync over SSH.
Key points:
- All backup data lives on the backup server.
- Snapshots are rsync-based and use hardlinking (--link-dest) for space efficiency.
- Designed for scheduled runs (cron) and manual runs.
- Minimal external dependencies (currently only PyYAML).
Requirements
On the backup server:
- Python 3
- rsync
- ssh
- SSH key-based access from the backup server to remotes
Canonical installation (no venv, repo used only for deployment)
This project uses a simple and explicit deployment model:
- The git clone is only used as a deployment input (and later for updates).
- Runtime code is deployed into /opt/pobsync/lib.
- The canonical entrypoint is /opt/pobsync/bin/pobsync.
Install
cd pobsync
sudo ./scripts/deploy --prefix /opt/pobsync
pobsync install --backup-root /mnt/backups/pobsync (install default configurations)
pobsync doctor (check if the installation was done correctly)
Update
cd /path/to/pobsync
git pull
sudo ./scripts/deploy --prefix /opt/pobsync
sudo /opt/pobsync/bin/pobsync doctor
Configuration
Global configuration is stored at:
- /opt/pobsync/config/global.yaml
Per-host configuration files are stored at:
- /opt/pobsync/config/hosts/.yaml
Some useful commands to get you started
Create a new host configuration:
pobsync init-host <host>
List configured remotes:
pobsync list-remotes
Inspect the effective configuration for a host:
pobsync show-config <host>
Running backups
Run a scheduled backup for a host:
pobsync run-scheduled <host>
Optionally apply retention pruning after the run:
pobsync run-scheduled <host> --prune
Scheduling (cron)
Create a cron schedule (writes into /etc/cron.d/pobsync by default):
pobsync schedule create <host> --daily 02:15 --prune
List existing schedules:
pobsync schedule list
Remove a schedule:
pobsync schedule remove <host>
Cron output is redirected to:
- /var/log/pobsync/.cron.log
Development (optional)
For development purposes you can still use an editable install, this is why pyproject.toml still exists:
python3 -m pip install -e .
pobsync --help
For production use, always use the canonical entrypoint:
/opt/pobsync/bin/pobsync