# 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 ```git clone https://code.hosting.hippogrief.nl/hippogrief/pobsync.git 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 ` List configured remotes: `pobsync list-remotes` Inspect the effective configuration for a host: `pobsync show-config ` ## Running backups Run a scheduled backup for a host: `pobsync run-scheduled ` Optionally apply retention pruning after the run: `pobsync run-scheduled --prune` ## Scheduling (cron) Create a cron schedule (writes into /etc/cron.d/pobsync by default): `pobsync schedule create --daily 02:15 --prune` List existing schedules: `pobsync schedule list` Remove a schedule: `pobsync schedule remove ` 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