Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZNAPZENDZETUP(1)		    znapzend			ZNAPZENDZETUP(1)

NAME
     znapzendzetup - znapzend setup utility

SYNOPSIS
     znapzendzetup command [common-options...] [command-options...]

     where 'common-options' (must precede command-options) is a mix of the fol-
     lowing:

		 [--rootExec={pfexec|sudo}] \
		 [--features={x,y,...}] \
		     {lowmemRecurse zfsGetType} \
		 [--debug]

     and where 'command' and its unique options is one of the following:

	 create  [--recursive] [--mbuffer=<path>[:<port>]] [--mbuffersize=<size>] \
		 [--pre-snap-command=<command>] \
		 [--post-snap-command=<command>] \
		 [--tsformat=<format>] --donotask \
		 [--send-delay=<time>] \
		 SRC plan dataset [src_mbuffer_path [src_mbuffer_size]] \
		 [ DST[:key] plan [[user@]host:]dataset
		     [pre-send-command] [post-send-command] \
		     [dst_mbuffer_path[:port]] [dst_mbuffer_size] ]

		 NOTE: If you specify [user@]host:dataset for remote replication
		 over SSH, make use of ~/.ssh/config for any advanced options
		 (custom ports, keys to use, etc.) See znapzend README for ideas.

	 delete  [--dst=key] <src_dataset>

	 edit	 [--recursive=on|off] \
		 [--mbuffer=<path>[:<port>]|off] [--mbuffersize=<size>] \
		 [--pre-snap-command=<command>|off] \
		 [--post-snap-command=<command>|off] \
		 [--tsformat=<format>] --donotask \
		 [--send-delay=<time>] \
		 SRC [plan] dataset [src_mbuffer_path [src_mbuffer_size]] \
		 [ DST:key [plan] [dataset] \
		     [pre-send-command|off] [post-send-command|off] \
		     [dst_mbuffer_path[:port]|off] [dst_mbuffer_size] ]

	 edit	 <src_dataset>

	 enable  <src_dataset>

	 disable <src_dataset>

	 enable-dst  <src_dataset> <DST_key>

	 disable-dst <src_dataset> <DST_key>

	 enable-dst-autocreation  <src_dataset> <DST_key>

	 disable-dst-autocreation <src_dataset> <DST_key>

	 inherit-dst-autocreation  <src_dataset> <DST_key>

	 list	 [--recursive] [--inherited] [src_dataset...]

	 export  <src_dataset>

	 import  [--write] [--prop <property>=<value>, [--prop ...] ...]
		 <src_dataset> [<prop_dump_file>]

	 help

	 man

DESCRIPTION
     Use znapzendsetup to configure your backup tasks. The cli is modled after
     the zfs commandline.

     After modifying the configuration, send a HUP signal to your znapzend dae-
     mon for it to re-read the configuration.

     Common options include:

     --features=feature1,feature2,...
	 enables a few enhanced zfs module features to be on par with those used
	 by the znapzend command (but far fewer are relevant for the
	 znapzendzetup)

	 Available features:

	 lowmemRecurse
	     use 'lowmemRecurse' on systems where you have too many datasets, so
	     a recursive listing of attributes to find backup plans exhausts the
	     memory available to `znapzend(zetup)`: instead, go the slower way
	     to first list all impacted dataset names, and then query their con-
	     figs one by one.

	 zfsGetType
	     use 'zfsGetType' if your 'zfs get' supports a '-t' argument for
	     filtering by dataset type at all (e.g. one in Solaris 10 does not),
	     AND lists properties for snapshots by default when recursing (e.g.
	     the one in Solaris 10u8 already does), so that there is too much
	     data to process while searching for backup plans.

	     If these two conditions apply to your system, the time needed for a
	     '--recursive' listing of backup plans can literally differ by hun-
	     dreds of times (depending on the amount of snapshots in that
	     dataset tree... and a decent backup plan will ensure you have a lot
	     of those), so you would benefit from requesting this feature.

	     This feature should not impact the default (non- '--recursive')
	     listings however.

     Below a few notes on main commands.

   create
     The heart of the znapzend backup is the plan. The plan specifies how often
     to backup and for how long to keep the backups. A plan is required both for
     the source and the destination datasets.

     The plan consists of a series of retention periods to interval associa-
     tions:

       retA=>intA,retB=>intB,...

     Both intervals and retention periods are expressed in standard units of
     time or multiples of them. You can use both the full name or a shortcut ac-
     cording to the following table:

      second|sec|s
      minute|min
      hour|h
      day|d
      week|w
      month|mon|m
      year|y

     To keep one copy every 30 minutes for one week, specify:

      1week=>30min

     To keep one copy every two days for 10 years:

      10year=>2day

     In a minimal setup, you just specify a plan for the SRC fileset. This will
     cause snapshots to be taken and destroyed according to the plan. You can
     then add one or several destinations (DST) both local (preferably on a dif-
     ferent pool) or remote.

     When adding multiple DST entries, each will get labeled for later identifi-
     cation, optionally you can specify your own label.

     --tsformat=limited-strftime-format
	 The --tsformat option specifies how the names of the snapshots are con-
	 structed.

	 The syntax is strftime-like. The string must consist of the mandatory

	  %Y %m %d %H %M %S %z

	 Optionally,

	 - _ . :

	 characters as well as any alphanumeric character are allowed.

	 If not specified, --tsformat defaults to "%Y-%m-%d-%H%M%S".

	 If --tsformat string is suffixed by a 'Z', times will be in UTC. E.g.:

	  --tsformat='%Y-%m-%dT%H:%M:%SZ'

	 NOTE: that windoz will probably not like the ":" characters. So if you
	 intend to browse the snapshots with windoz, you may want to use a dif-
	 ferent separator.

     --mbuffer=/usr/bin/mbuffer
	 DEPRECATED: Specify the path to your copy of the mbuffer utility.

	 NOTE: with this option, the same path would be used for all remote des-
	 tinations - this can misfire if they run different operating systems.

	 It is currently recommended to define individual dst_mbuffer_path op-
	 tions for each separate destination in each dataset configuration.  The
	 --mbuffer value would be used as a fallback default for those.

	 Per legacy-default behavior, the mbuffer program was not used by the
	 sender (unless using a dedicated port, see below). Nowadays it is pos-
	 sible to specify it instead of (or in addition to) a destination side
	 mbuffer, using the src_mbuffer_path in each source dataset configura-
	 tion.

     --mbuffer=/usr/bin/mbuffer:31337
	 DEPRECATED: Specify the path to your copy of the mbuffer utility and
	 the port used on the destination. Caution: znapzend will use SSH to set
	 up the remote mbuffer receiver, but will send the snapshot data stream
	 directly from source mbuffer to destination mbuffer. In other words,
	 the data stream is not encrypted. Use this only in a trusted LAN or
	 over VPN, where you can safely avoid the overheads of an SSH tunnel.

	 NOTE: with this option, the same path would be used for all remote des-
	 tinations as well as the source system - this can misfire if they run
	 different operating systems.

	 It is currently recommended to define individual *_mbuffer_path options
	 for each source and each separate destination in each dataset configu-
	 ration. The --mbuffer value would be used as a fallback default for
	 those (with only path component for the source).

     --mbuffersize=number{b|k|M|G}
	 The size of the mbuffer can be set with the --mbuffersize option.  It
	 supports the following units:

	  b, k, M, G

	 To specify a mbuffer size of 100MB:

	  --mbuffersize=100M

	 If not set, the buffer size defaults to 1GB.

	 It is currently suggested to define individual mbuffer_size options for
	 each source and each separate destination in each dataset configura-
	 tion.	The --mbuffer-size value would be used as a fallback default for
	 those.

     --donotask
	 Apply changes immediately. Without being asked if the config is as you
	 intended it to be.

     --pre-snap-command=/path/bin args, --post-snap-command=/path/bin args
	 Run commands/scripts before and after snapshots are taken on source.
	 e.g. for database locking/flushing (pre) and unlocking (post).

	 If you deal with a mariadb/mysql database, you can use

	   pre-snap-command  = /opt/oep/mariadb/bin/mysql -e "set autocommit=0;flush tables with read lock;\\! /bin/sleep 600" &  /usr/bin/echo $! > /tmp/mariadblock.pid ; sleep 10
	   post-snap-command = /usr/bin/kill `/usr/bin/cat /tmp/mariadblock.pid`;/usr/bin/rm /tmp/mariadblock.pid

	 to make sure that the on-disk data is consistent when snapshotting. The
	 lock stays in place only for the duration of the lingering connection
	 to mysql we need to employ, or until the snapshotting attempt times
	 out.  For this to work, add the root password of your mariadb/mysql
	 database setup into ~root/.my.cnf and make sure the file permissions
	 are tight ...

	 The pre and post snapshot commands can find the name and time of the
	 snapshot in the environment variables ZNAP_NAME and ZNAP_TIME.

     --send-delay
	 Specify delay (in seconds) before sending snaps to the destination.
	 May be useful if you want to control sending time.

     pre-send-command=/path/bin args, post-send-command=/path/bin args
	 Run command/script before and after sending the snapshot to the desti-
	 nation.  Intended to run a remote script via ssh on the destination,
	 e.g. to bring up a backup disk or server. Or to put a zpool online/of-
	 fline:

	   "ssh root@bserv zpool import -Nf tank"
	   "ssh root@bserv zpool export tank"

   delete
     to remove configuration from a dataset just give its name

      znapzendzetup delete I<dataset>

     the delete function understands the following options:

     --dst=key
	 to only remove a destination, specify the key of the destination. Use
	 the list function to see the keys.

   edit
     modify the configuration of a dataset. See the descriptions in the create
     function for details.

     If edit is used with a source dataset as single argument, properties can be
     edited in an editor.

   export
     dumps the backup configuration of a dataset

      znapzendzetup export I<dataset>

   import
     reads configuration data from a file or STDIN and prints it content

     --write
	 actually store the new configuration into the dataset given on the com-
	 mand line.

     --prop key="value" [ --prop ... ]
	 may be called multiple times to override properties in the imported
	 config.

EXAMPLES
     create a complex backup task

	 znapzendzetup create --recursive --mbuffer=/opt/omni/bin/mbuffer \
	    --mbuffersize=1G --tsformat='%Y-%m-%d-%H%M%S' \
	    --pre-snap-command="/bin/sh /usr/local/bin/lock_flush_db.sh" \
	    --post-snap-command="/bin/sh /usr/local/bin/unlock_db.sh" \
	    SRC '7d=>1h,30d=>4h,90d=>1d' tank/home \
	       "/usr/bin/mbuffer" "128M" \
	    DST:a '7d=>1h,30d=>4h,90d=>1d,1y=>1w,10y=>1month' backup/home \
	    DST:b '7d=>1h,30d=>4h,90d=>1d,1y=>1w,10y=>1month' \
	       root@bserv:backup/home \
	       "/root/znapzend.sh dst_b pool on" \
	       "/root/znapzend.sh dst_b pool off" \
	       "/opt/bin64/mbuffer" "4G"

     copy the setup from one fileset to another

	 znapzendzetup export tank/home | znapzendzetup import --write tank/new_home

RUNNING AS AN UNPRIVILEGED USER
     In order to allow a non-privileged user to use it, the following permis-
     sions are required on the ZFS filesystems:

     Sending end: destroy,hold,mount,send,snapshot,userprop Receiving end: cre-
     ate,mount,receive,userprop

COPYRIGHT
     Copyright (c) 2014 by OETIKER+PARTNER AG. All rights reserved.

LICENSE
     This program is free software: you can redistribute it and/or modify it un-
     der 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 FIT-
     NESS 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/>.

AUTHOR
     Tobias Oetiker <tobi@oetiker.ch> Dominik Hassler <hadfl@cpan.org>

HISTORY
     2016-09-23 ron Destination pre and post send/receive commands 2014-07-22
     had Pre and post snapshot commands 2014-06-29 had Flexible snapshot time
     format 2014-06-01 had Multi destination backup 2014-05-30 had Initial Ver-
     sion

0.23.4				   2026-07-04			ZNAPZENDZETUP(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=znapzendzetup&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help