Skip to main content

Incremental btrfs snapshot backups with push/pull support via SSH

Project description

Btrfs snapshot backup utility

  • Push/pull support via SSH
  • Retention
  • Email notifications
  • Compression of transferred data
  • Syslog logging

System dependencies

Required

The following packages have to be available on both source and destination

  • btrfs-progs

The system executing btrfs-backup requires

  • python3

Optional

  • ssh (for remote push/pull, not required for local operation)
  • lzop (for compression support if desired)
  • pv (provides progress indication if installed)
  • sendmail (for email notifications if desired)

Installation

pip install btrfs-sxbackup

Setup

  • When using ssh, public/private key authentication should be set up

Usage examples

Initialize

Initialize a backup job pulling snapshots of subvolume / on remote host myhost.org to local subvolume /backup/myhost

btrfs-sxbackup init ssh://root@myhost.org:/ /backup/myhost

Initialize a backup job pushing snapshots of local subvolume / to remote subvolume /backup/myhost on host mybackupserver.org

btrfs-sxbackup init / ssh://root@mybackupserver.org:/backup/myhost

Run backup job

Cron

Cronjob performing a pull backup job

# /etc/cron.d/btrfs-sxbackup
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
30 2    * * *     root     btrfs-sxbackup /backup/myhost

Synopsis and options

usage: btrfs-sxbackup [-h] [-q] [--trace] [--version]
                      {init,destroy,update,run,info} ...

positional arguments:
  {init,destroy,update,run,info}
    init                initialize backup job
    destroy             destroy backup job
    update              update backup job
    run                 run backup job
    info                backup job info

optional arguments:
  -h, --help            show this help message and exit
  -q, --quiet           do not log to stdout
  --trace               enables trace output
  --version             show program's version number and exit

init

usage: btrfs-sxbackup init [-h] [-sr SOURCE_RETENTION]
                           [-dr DESTINATION_RETENTION] [-c]
                           source-subvolume destination-subvolume

positional arguments:
  source-subvolume      source subvolume to backup. local path or SSH url
  destination-subvolume
                        destination subvolume receiving backup snapshots.
                        local path or SSH url

optional arguments:
  -h, --help            show this help message and exit
  -sr SOURCE_RETENTION, --source-retention SOURCE_RETENTION
                        expression defining which source snapshots to
                        retain/cleanup. can be a static number (of backups) or
                        more complex expression like "1d:4/d, 1w:daily,
                        2m:none" literally translating to: "1 day from now
                        keep 4 backups a day, 1 week from now keep daily
                        backups, 2 months from now keep none"
  -dr DESTINATION_RETENTION, --destination-retention DESTINATION_RETENTION
                        expression defining which destination snapshots to
                        retain/cleanup. can be a static number (of backups) or
                        more complex expression (see --source-retention
                        argument)
  -c, --compress        enables compression during transmission. Requires lzop
                        to be installed on both source and destination

run

usage: btrfs-sxbackup run [-h] [-m [MAIL]] [-li LOG_IDENT]
                          subvolume [subvolume ...]

positional arguments:
  subvolume             backup job source or destination subvolume. local path
                        or SSH url

optional arguments:
  -h, --help            show this help message and exit
  -m [MAIL], --mail [MAIL]
                        enables email notifications. If an email address is
                        given, it overrides the default email-recipient
                        setting in /etc/btrfs-sxbackup.conf
  -li LOG_IDENT, --log-ident LOG_IDENT
                        log ident used for syslog logging, defaults to script
                        name

update

usage: btrfs-sxbackup update [-h] [-sr SOURCE_RETENTION]
                             [-dr DESTINATION_RETENTION] [-c]
                             subvolume [subvolume ...]

positional arguments:
  subvolume             backup job source or destination subvolume. local path
                        or SSH url

optional arguments:
  -h, --help            show this help message and exit
  -sr SOURCE_RETENTION, --source-retention SOURCE_RETENTION
                        expression defining which source snapshots to
                        retain/cleanup. can be a static number (of backups) or
                        more complex expression like "1d:4/d, 1w:daily,
                        2m:none" literally translating to: "1 day from now
                        keep 4 backups a day, 1 week from now keep daily
                        backups, 2 months from now keep none"
  -dr DESTINATION_RETENTION, --destination-retention DESTINATION_RETENTION
                        expression defining which destination snapshots to
                        retain/cleanup. can be a static number (of backups) or
                        more complex expression (see --source-retention
                        argument)
  -c, --compress        enables compression during transmission. Requires lzop
                        to be installed on both source and destination

info

usage: btrfs-sxbackup info [-h] subvolume [subvolume ...]

positional arguments:
  subvolume   backup job source or destination subvolume. local path or SSH
              url

optional arguments:
  -h, --help  show this help message and exit

destroy

usage: btrfs-sxbackup destroy [-h] [--purge] subvolume [subvolume ...]

positional arguments:
  subvolume   backup job source or destination subvolume. local path or SSH
              url

optional arguments:
  -h, --help  show this help message and exit
  --purge     removes all backup snapshots from source and destination

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for btrfs-sxbackup, version 0.5.0
Filename, size File type Python version Upload date Hashes
Filename, size btrfs-sxbackup-0.5.0.tar.gz (17.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page