X-Git-Url: http://www.git.stargrave.org/?p=dotfiles.git;a=blobdiff_plain;f=bin%2Fbin%2Fzsnap.zsh;h=a75650c2a2c3ac09e37b6b216aec4125879e3766;hp=a14979b750616313e817e7b73f5e939bd655b92b;hb=d0382ac857db24d7b72bf60c77e347596e9c7e52;hpb=bc8e1659b3a445ac235677fef437dd8623669d6b diff --git a/bin/bin/zsnap.zsh b/bin/bin/zsnap.zsh index a14979b..a75650c 100755 --- a/bin/bin/zsnap.zsh +++ b/bin/bin/zsnap.zsh @@ -1,65 +1,73 @@ -#!/bin/zsh -e +#!/usr/bin/env zsh + +set -e usage() { -cat < $dst/$latest.zfs.zst.gpg + dst=$3 + [[ -d $dst ]] || usage + setopt PIPE_FAIL + zfs send -Rv $latest | zstd | ${=enccmd} > \ + $dst/$latest_filename.zfs.zst.gpg sync - touch $dst/$latest.from + touch $dst/$latest_filename.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 + 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 - echo "$latest_dst" > $dst/$latest.from + print $latest_dst > $dst/$latest_filename.from ;; clean) - count="$3" - [ -n "$count" ] || usage + count=$3 + [[ -n $count ]] || usage count=$(( $count + 1 )) - for snap in $(echo $snaps) ; do + for snap in $snaps ; do count=$(( $count - 1 )) - [ $count -le 0 ] || continue + [[ $count -le 0 ]] || continue zfs destroy -Rv $snap done ;;