zsync

command module
v0.0.0-...-2979d6c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2023 License: BSD-3-Clause Imports: 31 Imported by: 0

README

ZFS syncing daemon

Introduction

The zsync daemon auto-snapshots ZFS datasets, replicates datasets, and auto-deletes stale snapshots. The replication can be performed across machines in either a push or pull mechanism using either SSH or local OS subprocesses.

This only tested with ZFS on Linux.

Usage

Delegate ZFS permissions

In order for the daemon to properly perform ZFS operations, the zfs allow feature must be used to enable permissions on certain operations.

The following permissions should be granted:

# On all sources:
sudo zfs allow $USER send $DATASET

# On all mirrors:
sudo zfs allow $USER receive,create,mount,mountpoint,readonly $DATASET

# On all sources and mirrors:
sudo zfs allow $USER snapshot,destroy,mount $DATASET

The mountpoint and readonly properties are only need when performing the first replication, where the receiving side sets mountpoint=none and readonly=on.

The zpool and zfs tool must work without sudo. See the "Changes in Behavior" section of the ZoL v0.7.0 release.

Build the daemon

go get -u github.com/dsnet/zsync

The instruction steps below assume $GOPATH/bin is in your $PATH, so that the zsync binary can be executed directly from the shell.

Create configuration file

The operation of zsync is configured using a JSON configuration file, where the full list of features can be listed by running zsync -help.

Here is an example configuration file (adjust as appropriate):

{
	"SSH": {
		"KeyFiles":       ["/home/user/.ssh/id_rsa"],
		"KnownHostFiles": ["/home/user/.ssh/known_hosts"],
	},

	"AutoSnapshot": {"Cron": "@daily", "Count": 7},
	"Datasets": [{
		"Source":  "//localhost/tank/dataset",
		"Mirrors": ["//user@remotehost:22/tank/dataset-mirror"],
	}],
}

This example auto-snapshots daily and only keeps 7 snapshots. It replicates tank/dataset on the local machine to tank/dataset-mirror on a remote machine using an SSH push.

Running the daemon

Start the daemon with:

zsync /path/to/config.json

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL