Package: zfs-uploader
ZFS UploaderZFS Uploader is a simple program for backing up full and incremental ZFS
snapshots to Amazon S3. It supports CRON based scheduling and can
automatically remove old snapshots and backups. A helpful CLI (zfsup) lets
you run jobs, restore, and list backups.FeaturesBackup/restore ZFS file systemsCreate incremental and full backupsAutomatically remove old snapshots and backupsUse any S3 storage class typeHelpful CLIRequirementsPython 3.6 or higherZFS 0.8.1 or higher (untested on earlier versions)Install InstructionsCommands should be run as root.Create a directory and virtual environmentmkdir/etc/zfs_uploadercd/etc/zfs_uploader
virtualenv--pythonpython3envInstall ZFS Uploadersourceenv/bin/activate
pipinstallzfs_uploader
ln-sf/etc/zfs_uploader/env/bin/zfsup/usr/local/sbin/zfsupWrite configuration filePlease see theConfiguration Filesection below for
helpful configuration examples.viconfig.cfg
chmod600config.cfgStart servicecpzfs_uploader.service/etc/systemd/system/zfs_uploader.service
sudosystemctlenable--nowzfs_uploaderList backupszfsuplistConfiguration FileThe program reads backup job parameters from a configuration file. Default
parameters may be set which then apply to all backup jobs. Multiple backup
jobs can be set in one file.Parametersbucket_name : strS3 bucket name.access_key : strS3 access key.secret_key : strS3 secret key.filesystem : strZFS filesystem.prefix : str, optionalPrefix to be prepended to the s3 key.region : str, default: us-east-1S3 region.endpoint : str, optionalS3 endpoint for alternative servicescron : str, optionalCron schedule. Example:* 0 * * *max_snapshots : int, optionalMaximum number of snapshots.max_backups : int, optionalMaximum number of full and incremental backups.max_incremental_backups_per_full : int, optionalMaximum number of incremental backups per full backup.storage_class : str, default: STANDARDS3 storage class.max_multipart_parts : int, default: 10000Maximum number of parts to use in a multipart S3 upload.ExamplesMultiple full backups[DEFAULT]bucket_name=BUCKET_NAMEregion=us-east-1access_key=ACCESS_KEYsecret_key=SECRET_KEYstorage_class=STANDARD[pool/filesystem]cron=0 2 * * *max_snapshots=7max_incremental_backups_per_full=6max_backups=7Filesystem is backed up at 02:00 daily. Only the most recent 7 snapshots
are kept. The oldest backup without dependents is removed once there are
more than 7 backups.Backblaze B2 S3-compatible endpoint, full backups[DEFAULT]bucket_name=BUCKET_NAMEregion=eu-central-003access_key=ACCESS_KEYsecret_key=SECRET_KEYstorage_class=STANDARDendpoint=https://s3.eu-central-003.backblazeb2.com[pool/filesystem]cron=0 2 * * *max_snapshots=7max_incremental_backups_per_full=6max_backups=7Structurefull backup (f), incremental backup (i)ff if i if i i if i i i if i i i i if i i i i i if i i i i i ff i i i i f if i i i f i if i i f i i if i f i i i if f i i i i if i i i i i iSingle full backup[DEFAULT]bucket_name=BUCKET_NAMEregion=us-east-1access_key=ACCESS_KEYsecret_key=SECRET_KEYstorage_class=STANDARD[pool/filesystem]cron=0 2 * * *max_snapshots=7max_backups=7Filesystem is backed up at 02:00 daily. Only the most recent 7 snapshots
are kept. The oldest incremental backup is removed once there are
more than 7 backups. The full backup is never removed.Structurefull backup (f), incremental backup (i)ff if i if i i if i i i if i i i i if i i i i i iOnly full backups[DEFAULT]bucket_name=BUCKET_NAMEregion=us-east-1access_key=ACCESS_KEYsecret_key=SECRET_KEYstorage_class=STANDARD[pool/filesystem]cron=0 2 * * *max_snapshots=7max_incremental_backups_per_full=0max_backups=7Filesystem is backed up at 02:00 daily. Only the most recent 7 snapshots
are kept. The oldest full backup is removed once there are
more than 7 backups. No incremental backups are taken.Structurefull backup (f)ff ff f ff f f ff f f f ff f f f f ff f f f f f fMiscellaneousStorage class codesSTANDARDREDUCED_REDUNDANCYSTANDARD_IAONEZONE_IAINTELLIGENT_TIERINGGLACIERDEEP_ARCHIVEOUTPOSTSRelease InstructionsIncrement version in__init__.pyfileUpdateCHANGELOG.mdwith new versionTag release in GitHub when ready. Add changelog items to release
description. GitHub Action workflow will automatically build and push
the release to PyPi.