This repository has been archived on 2024-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/common/bin/backupify

27 lines
696 B
Fish
Executable File

#!/usr/bin/env fish
set host rift
set dir /storage/daniel/backups
set ext .tar.zstd.gpg
if not set -q argv[1]
echo "No directory provided"
exit 2
end
if not test -d $argv[1]
echo "Invalid directory given: $argv[1]"
exit 1
end
set fn (date +%Y%m%d_%H%M%S)(basename $argv[1])
pushd (dirname $argv[1])
# TODO: progress bar/status?
echo "Streaming PGP encrypted backup of $argv[1] to host rift via ssh at $dir/$fn$ext..."
tar cvf - (basename $argv[1]) 2>/dev/null |
zstd --ultra -T2 -22 |
gpg --encrypt --recipient daniel@lyte.dev |
ssh $host "cat - > $dir/$fn$ext"
popd
# TODO: checksum?
echo "Uploaded to host rift via ssh at $dir/$fn$ext"
echo ' Run `unbackupify '$fn$ext'` to restore!'