bashclub-zfs-push-pull/README.md
Chriz 3b3e74b0a2
Update README.md
Explanied additional Features
2022-12-25 22:49:59 +01:00

75 lines
3.3 KiB
Markdown

# bashclub-zfs
zfs snapshot send/receive supporting pull
## Basic Usage
bashclub-zfs remote_host:src_pool/fs dest_pool
This will create a new snapshot on the remote host (via SSH) and "send" it to
your local host where it will be received into dest_pool/fs.
I use this on my laptop to backup my home server to a removable drive. This
*pull* functionality was something I had trouble finding in the other similar
scripts out there, and was the main reason I wrote this.
## Features
* pull from a remote source to a local (or remote) destination
* (source and destination can each be either local or remote)
* keeps its own set of snapshots
* SSH connection is made with regular user, and uses sudo for ZFS commands
* sends incremental snapshots after first run
## Features and Limitations
* always uses sudo
* always creates recursive snapshots (`zfs snapshot -r`) - But better use 02pull to sync single Datasets
* select to send full replication stream (`zfs send -R`) or Intermediate Snapshots (zfs send -I), default without sending Full and Intermediate!
* destination should be specified as the *parent* of the desired destination
(`zfs recv -e`)
## Install/Requirements
* There is no need to install, just clone/download where you like and run
* Created & tested with [ZFS On Linux][1] on Ubuntu 16.04
* Requires bash(1), date(1), sudo(8), and zfs(8)
* Requires ssh(1) for remote hosts
* If your SSH environment requires a custom port or other configuration
options, that will need to be done in your ssh_config(5) file
## Usage/Examples
bashclub-zfs [-hvq] [-t tag] [-k keep] [-d dateopts] src dest
use zfs send/recv to push/pull snapshots
!This Release is default set to send raw. This means you can send encrypted and compressed Datasets 1:1!
src the source fs, specified as [host:]pool/path/to/fs
dest the destination fs parent, specified as [host:]pool/path/to/fs
(the final path component of src will be appended to dest)
-p ssh port
-h help
-v verbose mode
-C SSH Compression - obsolete if send_opts="-v -w" are set to raw
-R ZFS Re-Init
-I Send intermediate Snapshots
-q quiet mode
-t tag tag to use for naming snapshots (default: backup-zfs)
-k keep number of snapshots to keep on src (default: 5)
-d dateopts options for date(1) - used to name the snapshots (default: +%F_%T)
-s store mode - output snaps from local fs to ssh server
-r read mode - read snaps from ssh server to local fs
-g gpg-id gpg recipient key id (store mode only)
# Local mode: Backup tank/system to backup/tank/system
bashclub-zfs tank/system backup/tank
# Pull mode: Backup tank/system on tankhost to localhost
bashclub-zfs tankhost:tank/system backup/tank
# Push mode: Backup tank/system on localhost to backuphost
bashclub-zfs tank/system backuphost:backup/tank
# Double remote mode: Backup tank/system on tankhost to backuphost
bashclub-zfs tankhost:tank/system backuphost:backup/tank
# In this mode, your client will establish two separate SSH sessions,
# connect them with a pipe, and pull data from one while pushing to the
# other. No data will be stored locally.
[1]: https://github.com/zfsonlinux/zfs