bin: add extensive borg integration

This commit is contained in:
xeruf 2021-11-25 13:18:57 +01:00
parent 64afb74b0a
commit d8c7616eb0
3 changed files with 20 additions and 2 deletions

View File

@ -1,11 +1,13 @@
#!/bin/sh #!/bin/sh
# Backup root filesystem with borg # Backup root filesystem with borg
case "$1" in case "$1" in
(-n) run="arg-test"; shift;;
(-*) name="${1#-}"; shift;; (-*) name="${1#-}"; shift;;
(*) test $# -gt 0 || cd /;; (*) test $# -gt 0 || cd /;;
esac esac
name="/mnt/backup/borg::$(test -n "$name" && echo "$name" || cat /etc/hostname)-${1:-system}-$(date -u +"%y%m%d")" name="::$(test -n "$name" && echo "$name" || cat /etc/hostname)_${1:-system}_$(date -u +"%y%m%d")"
echo "Backing up as $name" echo "Backing up as $name"
sudo borg create --progress --stats \ sudo --preserve-env=BORG_REPO ${run:-borg} create --progress --stats \
$(echo $DIRS_IGNORE_SAFE -x 'software-challenge/*/build' -x 'emacs/.local' | sed 's|-x \([^ ]\+\)|-e "sh:**/\1"|g') \ $(echo $DIRS_IGNORE_SAFE -x 'software-challenge/*/build' -x 'emacs/.local' | sed 's|-x \([^ ]\+\)|-e "sh:**/\1"|g') \
"$name" $(test $# -eq 0 && echo etc home root || test $# -eq 1 && echo $1) "${@:2}" "$name" $(test $# -eq 0 && echo etc home root || test $# -eq 1 && echo $1) "${@:2}"
sudo chown -R $USER:$USER "$BORG_REPO"

13
.local/bin/scripts/bog Executable file
View File

@ -0,0 +1,13 @@
#!/bin/sh -e
# Simple backup with borg
test $# -eq 0 && borg list --format "{barchive:40} {time}{NL}" && exit 0
test "$1" = "-n" && run=arg-test && shift
case "$1" in (*_) prefix=$1; shift;; esac
name="$(echo "$1" |
sed -e 's|/$||' \
-e 's|20\([0-9]\{2\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)|\1\2\3|' \
-e 's|\([0-9]\{6\}\)[-_]\(.*\)|\2_\1|' \
-e 's|\(\w\+Drive\)|cloud_\L\1|i')"
test $# -gt 1 && shift
${run:-borg} create --progress --stats "::$prefix$name" "$@"

View File

@ -1,6 +1,9 @@
export DATA="$(test -d $HOME/daten && echo $HOME/daten || echo $HOME/data)" export DATA="$(test -d $HOME/daten && echo $HOME/daten || echo $HOME/data)"
export MUSIC="$DATA/music" export MUSIC="$DATA/music"
export BORG_REPO="/mnt/backup/borg"
export BORG_PASSCOMMAND='pass services/borg/backup'
# xdg # xdg
export XDG_DATA_HOME="$HOME/.local/share" export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state" export XDG_STATE_HOME="$HOME/.local/state"