{"id":39915561,"url":"https://github.com/TheUbuntuGuy/zfs-backup-manager","last_synced_at":"2026-01-27T05:01:04.241Z","repository":{"id":80343401,"uuid":"100759969","full_name":"TheUbuntuGuy/zfs-backup-manager","owner":"TheUbuntuGuy","description":"Automatic ZFS Backup Management Tool","archived":false,"fork":false,"pushed_at":"2025-05-14T19:12:01.000Z","size":37,"stargazers_count":37,"open_issues_count":1,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-14T20:27:01.015Z","etag":null,"topics":["backup","dataset","pool","ssh","zfs","zfs-backup"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheUbuntuGuy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-08-19T00:41:58.000Z","updated_at":"2025-05-14T19:08:45.000Z","dependencies_parsed_at":"2023-06-05T23:45:17.947Z","dependency_job_id":null,"html_url":"https://github.com/TheUbuntuGuy/zfs-backup-manager","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/TheUbuntuGuy/zfs-backup-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheUbuntuGuy%2Fzfs-backup-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheUbuntuGuy%2Fzfs-backup-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheUbuntuGuy%2Fzfs-backup-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheUbuntuGuy%2Fzfs-backup-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheUbuntuGuy","download_url":"https://codeload.github.com/TheUbuntuGuy/zfs-backup-manager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheUbuntuGuy%2Fzfs-backup-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28803641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T03:44:14.111Z","status":"ssl_error","status_checked_at":"2026-01-27T03:43:33.507Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","dataset","pool","ssh","zfs","zfs-backup"],"created_at":"2026-01-18T17:00:25.995Z","updated_at":"2026-01-27T05:01:04.218Z","avatar_url":"https://github.com/TheUbuntuGuy.png","language":"Shell","funding_links":[],"categories":["🛠️ ZFS tools"],"sub_categories":["ZFS Backup tools"],"readme":"# ZFS Backup Manager\n\nThis tool backs up one or more datasets from one pool to another and manages incremental sends based on timely snapshots generated by a tool such as `zfs-auto-snapshot`.  \nIt can use local pipes, `SSH`, or `mbuffer` for data transfer. It has modes for nesting datasets on the destination, and special handling for mountpoints of root pools.  \nDataset-specific options are stored as custom properties within the dataset, and datasets to backup are automatically discovered.\n\nIt can be automated to run with a backup server which is normally powered off using [offline-zfs-backup](https://github.com/TheUbuntuGuy/offline-zfs-backup).\n\nAll configuration options and their explanations can be found in the config file `/etc/zfs-backup-manager.conf`. All options can be overridden from the command line as well, including specifying other configuration files.\n\n## Quick Usage Reference\n```\nUsage: zfs-backup-manager.sh [--simulate] [--ignore-lock] [--config FILE]\n  --simulate                Print the commands which would be run,\n                            but don't actually execute them.\n  --ignore-lock             Ignore the presence of a lock file and run regardless.\n                            This option is dangerous and should only be used to\n                            clear a previous failure.\n  --config FILE             Load a custom configuration file.\n                            If not set, defaults to '/etc/zfs-backup-manager.sh'.\n\nThe following options override those set in the configuration file.\nSee the configuration file for a detailed explanation of each option with examples.\n  --snapshot-pattern        The pattern to search for in snapshot names to backup.\n  --mode-property           The ZFS property which contains the backup mode.\n  --nest-name-property      The ZFS property which contains the dataset name to nest within.\n  --zfs-options-property    The ZFS property which contains additional ZFS receive options.\n  --remote-pool             The destination pool name.\n  --remote-host             The hostname of the destination. Pass \"\" for the local machine.\n  --remote-user             The user to login as on the destination.\n  --remote-mode             The transfer mode to a remote system. (ssh/mbuffer)\n  --mbuffer-block-size      The block size to set when using mbuffer, or \"auto\" to use recordsize.\n  --mbuffer-port            The port for mbuffer to listen on.\n  --mbuffer-buffer-size     The size of the send and receive buffers when using mbuffer.\n  --ssh-options             Additional options to pass to SSH.\n\nThis script must be run as root.\n```\n\n## Sample Output\nThis is an example of backing up a single dataset using `mbuffer` for transport, and the `root` mode.\n```\n[ZFS Backup Manager] ZFS Backup Manager v0.0.2 Starting...\n[ZFS Backup Manager] Loading configuration...\n[ZFS Backup Manager] Using mbuffer for transfer\n[ZFS Backup Manager]\n[ZFS Backup Manager] Processing dataset: rootpool/ROOT/watt\n[ZFS Backup Manager] Using mode: root\n[ZFS Backup Manager] Nesting in: watt/rootpool/ROOT\n[ZFS Backup Manager] Local HEAD is: zfs-auto-snap_daily-2018-02-10-1125\n[ZFS Backup Manager] Remote HEAD is: zfs-auto-snap_daily-2018-02-08-1125\n[ZFS Backup Manager] Performing send/receive...\n[ZFS Backup Manager] Using blocksize: 128k\nreceiving incremental stream of rootpool/ROOT/watt@zfs-auto-snap_daily-2018-02-09-1125 into backuppool/watt/rootpool/ROOT/watt@zfs-auto-snap_daily-2018-02-09-1125\nreceived 30.1M stream in 30 seconds (1.00M/sec)\nreceiving incremental stream of rootpool/ROOT/watt@zfs-auto-snap_daily-2018-02-10-1125 into backuppool/watt/rootpool/ROOT/watt@zfs-auto-snap_daily-2018-02-10-1125\nreceived 312B stream in 1 seconds (312B/sec)\n[ZFS Backup Manager]\n[ZFS Backup Manager] Backup process completed successfully. Exiting.\n```\n\nAnother run with a single dataset using `ssh` transport and the `nested` mode.\n```\n[ZFS Backup Manager] ZFS Backup Manager v0.0.2 Starting...\n[ZFS Backup Manager] Loading configuration...\n[ZFS Backup Manager] Using SSH for transfer\n[ZFS Backup Manager] \n[ZFS Backup Manager] Processing dataset: tank/gitlab-data\n[ZFS Backup Manager] Using mode: nested\n[ZFS Backup Manager] Nesting in: gitlab\n[ZFS Backup Manager] Local HEAD is: zfs-auto-snap_daily-2018-02-10-1125\n[ZFS Backup Manager] Remote HEAD is: zfs-auto-snap_daily-2018-02-08-1125\n[ZFS Backup Manager] Performing send/receive...\nreceiving incremental stream of tank/gitlab-data@zfs-auto-snap_daily-2018-02-09-1125 into backuppool/gitlab/gitlab-data@zfs-auto-snap_daily-2018-02-09-1125\nreceived 312B stream in 1 seconds (312B/sec)\nreceiving incremental stream of tank/gitlab-data@zfs-auto-snap_daily-2018-02-10-1125 into backuppool/gitlab/gitlab-data@zfs-auto-snap_daily-2018-02-10-1125\nreceived 312B stream in 1 seconds (312B/sec)\n[ZFS Backup Manager] \n[ZFS Backup Manager] Backup process completed successfully. Exiting.\n```\n\n## Installation\nYou can build a Debian package on your system by running:\n```\nmake package\n```\n\nThe package will be located in `bin`. You can install it directly from `make` using:\n```\nmake install\n```\n\n## Testing\nThis script comes with a system test script `test_zfs_backup_manager.sh`. This script runs 37 external tests using temporary file-backed local pools. It is encouraged that you run these tests before using the script to prove that your system is sane.  \nSimilarly if you modify the script, run the tests to verify that you have not caused any regressions.  \nPlease note that currently the test script does not have 100% coverage, nor is it fully automated. You must check the output to validate more than just the return codes.\n\n## Dependencies\nYou will need `openssh-client`, `mbuffer`, `zfs-auto-snapshot`, and of course `zfs` installed to use all features. The Debian package links to the related packages.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheUbuntuGuy%2Fzfs-backup-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTheUbuntuGuy%2Fzfs-backup-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheUbuntuGuy%2Fzfs-backup-manager/lists"}