diff --git a/cmd/sampleconf/localbackup/host1.yml b/cmd/sampleconf/localbackup/host1.yml new file mode 100644 index 0000000..b1b6b15 --- /dev/null +++ b/cmd/sampleconf/localbackup/host1.yml @@ -0,0 +1,36 @@ +# mirror local pool to backup pool +local: + + global: + snapshot_prefix: zrepl_ + + schedule: + type: auto # infer schedule from autosnap step + + steps: + + - type: autosnap + interval: 10m + dataset_filter: { + "zroot<": ok + } + + - type: pull + mapping: { + "zroot<":"backups/local/zroot" + } + + - type: prune + policy: grid + grid: 1x1h(keep=all) + dataset_filter: { + "zroot<": ok + } + + - type: prune + policy: grid + grid: 1x1h(keep=all) | 24x1h | 35x1d | 6x30d + dataset_filter: { + "backups/local/zroot<": ok + } + diff --git a/cmd/sampleconf/pullbackup/backuphost.yml b/cmd/sampleconf/pullbackup/backuphost.yml new file mode 100644 index 0000000..ec7bc07 --- /dev/null +++ b/cmd/sampleconf/pullbackup/backuphost.yml @@ -0,0 +1,34 @@ +prod1.example.com: + + connect: + type: ssh + host: backuphost.example.com + user: root + port: 22 + identity_file: /root/.ssh/id_ed25519 + + schedule: + # we cannot infer a schedule from steps below, thus define one here + type: cron + cron: "@every 10m" # see https://godoc.org/github.com/robfig/cron + + steps: + + # pull datasets from remote to local + - type: pull + mapping: { + "zroot<":"storage/backups/zrepl/prod1.example.com/zroot" + "zroot/tmp": "!" + } + + # prune the snaphots we pulled + - type: prune + policy: grid + grid: 1x1h(keep=all) | 24x1h | 35x1d | 6x30d + dataset_filter: { + "storage/backups/zrepl/prod1.example.com/zroot<": ok + } + snapshot_filter: { + snapshot_prefix: zrepl_ + } + diff --git a/cmd/sampleconf/pullbackup/productionhost.yml b/cmd/sampleconf/pullbackup/productionhost.yml new file mode 100644 index 0000000..c7fbe79 --- /dev/null +++ b/cmd/sampleconf/pullbackup/productionhost.yml @@ -0,0 +1,33 @@ +backuphost.example.com: + + global: + snapshot_prefix: zrepl_ + + # accept connections from backups.example.com via ssh / stdinserver command + serve: + auth: ssh + role: source + acl: { + "zroot<": ok, + "zroot/usr/home<": omit, + } + + # periodic task list, following given schedule + schedule: + type: auto # infer from autosnap step + steps: + + - type: autosnap + interval: 10m + dataset_filter: { + "zroot<": ok + } + + - type: prune + policy: grid + grid: 1x1h(keep=all) + dataset_filter: { + "zroot<": ok + } + + diff --git a/cmd/sampleconf/pushbackup/backuphost.yml b/cmd/sampleconf/pushbackup/backuphost.yml new file mode 100644 index 0000000..7499d6e --- /dev/null +++ b/cmd/sampleconf/pushbackup/backuphost.yml @@ -0,0 +1,11 @@ +prod1.example.com: + + global: + snapshot_prefix: zrepl_ + + # accept connections from prod1.example.com via ssh / stdinserver command + serve: + auth: ssh + role: sink + root: storage/backups/zrepl/sink/prod1.example.com + diff --git a/cmd/sampleconf/pushbackup/productionhost.yml b/cmd/sampleconf/pushbackup/productionhost.yml new file mode 100644 index 0000000..43d3d25 --- /dev/null +++ b/cmd/sampleconf/pushbackup/productionhost.yml @@ -0,0 +1,47 @@ +# push backup to backups.example.com +backups.example.com: + + connect: + type: ssh + host: 192.168.122.128 + user: root + port: 22 + identity_file: /root/.ssh/id_ed25519 + connlog_read_file: /tmp/connlog_read + connlog_write_file: /tmp/connlog_write + + global: + snapshot_prefix: zrepl_ + + schedule: + type: auto + + steps: + + # take local snapshots & keep window of one day + - type: autosnap + interval: 10m + dataset_filter: { + "zroot/var/db<": ok, + "zroot/usr/home<": ok, + } + - type: prune + policy: grid + grid: 1x1d(keep=all) + dataset_filter: { + "zroot/var/db<": ok, + "zroot/usr/home<": ok, + } + + # push datasets to remote and prune there + # if these jobs fail, we have one day until we are out of sync + - type: push + dataset_filter: { + "zroot/var/db<": ok, + "zroot/usr/home<": ok, + } + - type: prune + remote: true + policy: grid + grid: 1x1h(keep=all) | 24x1h | 35x1d | 6x30d +