#!/bin/zsh -e usage() { cat < $dst/$latest.zfs.zst.gpg sync touch $dst/$latest.from ;; sync) dst="$3" [ -d "$dst" ] || usage latest_dst=$(find $dst -type f -name "*.from" | sort -rn | sed -n 1p) [ -n "$latest_dst" ] latest_dst=$(basename ${latest_dst%.from}) [ "$latest_dst" != "$latest" ] set PIPE_FAIL zfs send -Rv -i $latest_dst $latest | zstd | ${=enccmd} > $dst/$latest.zfs.zst.gpg sync echo "$latest_dst" > $dst/$latest.from ;; clean) count="$3" [ -n "$count" ] || usage count=$(( $count + 1 )) for snap in $(echo $snaps) ; do count=$(( $count - 1 )) [ $count -le 0 ] || continue zfs destroy -Rv $snap done ;; *) usage ;; esac