@@ -46,6 +46,8 @@ opt_skip_scrub=''
4646opt_verbose=' '
4747opt_pre_snapshot=' '
4848opt_post_snapshot=' '
49+ opt_pre_send=' '
50+ opt_post_send=' '
4951opt_do_snapshots=1
5052
5153# Global summary statistics.
@@ -220,6 +222,7 @@ do_send () # snapname, oldglob
220222 local GLOB=" $2 "
221223 local ii
222224 local remote=" ssh $opt_send_host zfs receive $opt_recv_opts $opt_recv_pool "
225+ local RUNSEND=1
223226
224227 # STEP 1: Go throug all snapshots we've created
225228 for ii in $SNAPS_DONE
@@ -278,11 +281,22 @@ $jj"
278281 # STEP 4: Go through all snapshots that is to be transfered and send them.
279282 for jj in $SNAPS_SEND
280283 do
281- if [ " $opt_send_type " = " incr" ]; then
282- echo " zfs send $opt_send_opts -i $jj $ii | $remote "
283- else
284- echo " zfs send $opt_send_opts -R $jj | $remote "
284+ if [ -n " $opt_pre_send " ]; then
285+ do_run " $opt_pre_send $jj " || RUNSEND=0
286+ fi
287+
288+ if [ $RUNSEND -eq 1 ]; then
289+ if [ " $opt_send_type " = " incr" ]; then
290+ do_run " zfs send $opt_send_opts -i $jj $ii | $remote " || RUNSEND=0
291+ else
292+ do_run " zfs send $opt_send_opts -R $jj | $remote " || RUNSEND=0
293+ fi
294+ fi
295+
296+ if [ $RUNSEND = 1 -a -n " $opt_post_send " ]; then
297+ do_run " $opt_post_send $jj " || RUNSEND=0
285298 fi
299+
286300 done
287301 done
288302}
@@ -296,6 +310,7 @@ GETOPT=$(getopt \
296310 --longoptions=debug,help,quiet,syslog,verbose \
297311 --longoptions=pre-snapshot:,post-snapshot:,destroy-only \
298312 --longoptions=send-full:,send-incr:,send-opts:,recv-opts: \
313+ --longoptions=pre-send:,post-send: \
299314 --options=dnshe:l:k:p:rs:qgv \
300315 -- " $@ " ) \
301316 || exit 128
438453 opt_post_snapshot=" $2 "
439454 shift 2
440455 ;;
456+ (--pre-send)
457+ opt_pre_send=" $2 "
458+ shift 2
459+ ;;
460+ (--post-send)
461+ opt_post_send=" $2 "
462+ shift 2
463+ ;;
441464 (--destroy-only)
442465 opt_do_snapshots=' '
443466 shift 1
0 commit comments