PortValhalla/scripts/lib/restoration.fish

81 lines
2 KiB
Fish

function backupFiles
if [ -n "$VALHALLA_BACKUP_DIR" ]
argparse -i "base-directory=" -- $argv
set -l tarArgs
set -l path (getArchivePath $argv)
set -l dir (dirname "$path")
argparse -i "u/user=" "n/name=" -- $argv
if runRestorationCommand test ! -d "$dir"
runRestorationCommand mkdir -p "$dir"
end
if [ -n "$_flag_base_directory" ]
set -a argv --base-directory "$_flag_base_directory"
set -a tarArgs -C "$_flag_base_directory"
else
set -a tarArgs -P
end
sudo tar $tarArgs -cvz (fd $argv) | createArchive "$path"
end
end
function restoreFiles
if [ -n "$VALHALLA_BACKUP_DIR" ]
argparse -i "user=" "base-directory=" -- $argv
set -l tarArgs
set -l sudoArgs
if [ -n "$_flag_base_directory" ]
set -a tarArgs -C "$_flag_base_directory"
else
set -a tarArgs -P
end
if [ -n "$_flag_user" ]
set -a sudoArgs -u "$_flag_user"
end
fetchArchive $argv | begin
sudo $sudoArgs tar $tarArgs -xvz
end
end
end
function createArchive -a path
runRestorationCommand sh -c "tee $(string escape -- "$path") >/dev/null"
end
function fetchArchive
set -l path (getArchivePath $argv)
runRestorationCommand cat "$path"
end
function runRestorationCommand
if [ -z "$VALHALLA_BACKUP_SERVER" ]
$argv
else
set -l args
if [ -n "$VALHALLA_BACKUP_SERVER_PORT" ]
set -a args -p $VALHALLA_BACKUP_SERVER_PORT
end
ssh $args "$VALHALLA_BACKUP_SERVER" (string escape -- $argv)
end
end
function getArchivePath
argparse -i "u/user=" "n/name=" -- $argv
set -l path "$VALHALLA_BACKUP_DIR"
if [ -b "$_flag_user" ]
set -a path Users "$_flag_user"
else
set -a path System
end
set -a path "$_flag_name.tar.gz"
realpath -m (string join / $path)
end