#!/usr/bin/env zsh setopt ERR_EXIT EXTENDED_GLOB usage() { cat < $dst/$latest_filename.zfs.zst.age sync touch $dst/$latest_filename.from ;; sync) [[ -d $dst ]] || usage mk_fifo latest_dst=($dst/*.from~$dst/.*(.Onn[1])) [[ $latest_dst ]] latest_dst=${latest_dst[1]} latest_dst=${${latest_dst##*/}%.from} [[ $latest_dst != $latest_filename ]] setopt PIPE_FAIL set -x zfs send -Rwv -i ${latest_dst:gs#%#/} $latest | zstdmt | $enccmd > \ $dst/$latest_filename.zfs.zst.age set +x sync print $latest_dst > $dst/$latest_filename.from ;; clean) count=$3 [[ -n $count ]] || usage count=$(( $count + 1 )) for snap in $snaps ; do count=$(( $count - 1 )) [[ $count -le 0 ]] || continue zfs destroy -Rv $snap done ;; *) usage ;; esac