#!/usr/bin/env zsh set -e usage() { cat < \ $dst/$latest_filename.zfs.zst.gpg sync touch $dst/$latest_filename.from ;; sync) dst=$3 [[ -d $dst ]] || usage latest_dst=($dst/*(.Onn[1])) [[ $latest_dst ]] latest_dst=${latest_dst[1]} latest_dst=${${latest_dst##*/}%.from} [[ $latest_dst != $latest_filename ]] setopt PIPE_FAIL zfs send -Rv -i ${latest_dst:gs#%#/} $latest | zstd | ${=enccmd} > \ $dst/$latest_filename.zfs.zst.gpg 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