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
Description
Rsync-based backup solution.
Readme 144 KiB
Languages
Python 98%
Shell 2%