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
       following:

		   [--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
       daemon 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 configs 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  hundreds  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
       associations:

	 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
       according 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	different pool)	or remote.

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

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

	   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 different 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
	   destinations	- this can misfire if  they  run  different  operating
	   systems.

	   It  is  currently recommended to define individual dst_mbuffer_path
	   options   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 possible to  specify  it	instead	 of  (or  in  addition	to)  a
	   destination side mbuffer, using the src_mbuffer_path	in each	source
	   dataset configuration.

       --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
	   destinations	 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 configuration. 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
	   configuration.   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
	   destination.	  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/offline:

	     "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
	   command 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
       permissions are required	on the ZFS filesystems:

       Sending end: destroy,hold,mount,send,snapshot,userprop  Receiving  end:
       create,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
       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/>.

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 Version

0.23.2				  2024-06-27		      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+14.3.quarterly>

home | help