znapzend - znapzend daemon
znapzend [options...]
--man show man-page and exit
--version print version and exit
-h,--help display this help and exit
-d,--debug print debug messages to STDERR
-n,--noaction run in simulation mode. does no changes to the filesystem
--nodestroy does all changes to the filesystem except destroy
--logto=x select where to log to (syslog::<facility> or <filepath>)
--loglevel=x define the log level when logging to file
--pidfile=x write a pid file when running in daemon mode
--daemonize fork into the background
--runonce=[x] run one round on the optionally provided dataset
--features=x comma separated list of features to be enabled
--rootExec=x exec zfs with this command to obtain root privileges (sudo or pfexec)
--connectTimeout=x sets the ConnectTimeout for ssh commands
--autoCreation automatically create dataset on dest if it not exists
--timeWarp=x shift znapzends sens of NOW into the future by x seconds
--skipOnPreSnapCmdFail skip snapshots if the pre-snap-command fails
--skipOnPreSendCmdFail skip replication if the pre-send-command fails
--cleanOffline clean up source snapshots even if a destination was offline
ZnapZend is a snapshot based zfs backup daemon creating snapshots on a scheduled basis on the source filesystem and on destination filesystems.
ZnapZend reads its configuration from custom properties in the fileset. Use znapzendzetup to set these properties.
- -d, --debug
-
talk a lot while running. Sends debug messages to stderr.
- -n, --noaction
-
don't do any actions which have lasting effect. Ideal to try our new new configurations together with --debug
- --nodestroy
-
do all changes to the filesystem except destroy old snapshots
- --logto={syslog::facility|filepath}
-
send logs out to either syslog or a logfile. Default is to send logs to syslog::daemon when runing daemonized. When running in debug mode, the logs will go to STDERR by default.
Examples:
--logto=/var/log/znapzend.log --logto=syslog::daemon
- --loglevel={debug|info|warning|err|alert}
-
Define the log level when logging to file. Default is debug.
- --pidfile=path
-
write a pid file when running in daemon mode pidfile defaults to /var/run/znapzend.pid if no pidfile is given
- --daemonize
-
Fork into the background.
- --runonce=[dataset]
-
run one round on source dataset or on all datasets if empty. This is very useful for testing. Use it in connection with --noaction and --debug while testing your new configuration
- --features=feature1,feature2,...
-
enables enhanced zfs features not supported by all zfs implementations. Do not enable features unless you are sure your zfs supports it
Available features:
- oracleMode
-
working around the following zfs issues we have seen on oracle:
The multi snapshot destroy syntax is not available. So stick to destroying them individually.
Sometimes a snapshot can not be destroyed because of some oracle zfs bug. Only a reeboot seems to be able to fix this. So we just destroy the ones we can destroy. Logging an error about the problem
- recvu
-
use the -u option on the receive end, to keep the destination zfs filesystems unmounted.
- compressed
-
use 'compressed' to add options -Lce to the zfs send command If a source and destination volume are both using compression, zfs send will, by default, decompress the data before sending. Zfs recv will then compress it again before writing it to disk. Using -c will skip the unnecessary decompress-compress stages. This decreases CPU load on both source and destination as well as reduce network bandwidth. The -L option is for large block support and -e is for embedded data support.
- --rootExec={sudo|pfexec}
-
Execute zfs with this command, 'sudo' or 'pfexec', to obtain root privileges. This is often necessary when running znapzend as a non-privileged user with a zfs install that doesn't support finer permission controls. This also applies to the zfs commands ran on remote servers over ssh.
For sudo, the /etc/sudoers file will need to be modified to allow for passwordless access to zfs commands if znapzend is to be ran as a daemon or the system will be used as a remote. Many ZFS installations include an /etc/sudoers.d/zfs file as an example.
- --connectTimeout=timeout
-
sets the ssh connection timeout (in seconds)
- --autoCreation
-
Automatically create a dataset on a destination host if it's not there yet.
- --timeWarp=x
-
Shift ZnapZends sense of time into the future by x seconds.
The practical application if this function is to determine what will happen at some future point in time. This can be useful for testing but also when running in noaction and debug mode to determine which snapshots would be created and removed at some future point in time.
- --skipOnPreSnapCmdFail
-
Prevent snapshots of a dataset from being taken when it has a pre-snap-command defined and the command returns a non-zero exit code or is killed by a signal.
- --skipOnPreSendCmdFail
-
Prevent snapshots of a dataset from being replicated to a destination when it has a pre-snap-command defined and the command returns a non-zero exit code or is killed by a signal.
- --cleanOffline
-
Clean snapshots of a source dataset even if one or more destination datasets failed during replication. The most recent common snapshot for each destination will not be deleted, but this is a potentially dangerous option. If the preserved snapshot somehow gets deleted from the destination, it may require a full re-replication the next time it is online.
To test a new config
znapzend --debug --noaction --runonce=tank/test
To see what is going to happen in one hour
znapzend --debug --noaction --timeWarp=3600 --runonce=tank/test
To run as a daemon
znapzend --daemonize --pidfile=/var/run/znapzend.pid --logto=syslog::daemon
Copyright (c) 2014 by OETIKER+PARTNER AG. All rights reserved.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
Tobias Oetiker <[email protected]>, Dominik Hassler <[email protected]>
2014-06-01 had Multi destination backup
2014-05-30 had Initial Version