diff options
author | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-02-16 23:20:18 +0300 |
---|---|---|
committer | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-02-16 23:20:18 +0300 |
commit | cbc4dd1f7a34ba23f4398708f0ad3bd35f0bf06f (patch) | |
tree | 70f1ace8acc26be48f1a79f13bb6ca5307ec5ec4 /dotfiles/.local/bin | |
parent | 7e53c43c0b5d95ba27fdc0b74616d275128026cc (diff) | |
download | swayrice-cbc4dd1f7a34ba23f4398708f0ad3bd35f0bf06f.tar.gz swayrice-cbc4dd1f7a34ba23f4398708f0ad3bd35f0bf06f.zip |
New script: bkup
Shortcut script to rsync frequently rsync'ed source dirs to frequent
targets.
Diffstat (limited to 'dotfiles/.local/bin')
-rwxr-xr-x | dotfiles/.local/bin/bkup | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/dotfiles/.local/bin/bkup b/dotfiles/.local/bin/bkup new file mode 100755 index 0000000..0e4d503 --- /dev/null +++ b/dotfiles/.local/bin/bkup @@ -0,0 +1,52 @@ +#!/bin/sh + +# Yaroslav de la Peña Smirnov 2021 +# Shortcut script for backing up files with rsync. +# By default it starts a dry run, to check that there are no conflicts. To +# commit the copy, i.e. do a normal (non-dry) run, use -c as the first or last +# argument. + +############################# Config example ################################### +## Lines in the locations file contain the shortcuts for the sources and +## destinations. For example, sources: +# src d /home/yaroslav/docs +# src m /home/yaroslav/music +## destinations: +# dst rm yaroslav@example.com: +# dst hd /mnt/disk/ +## The columns MUST be separated by ONE tab character +################################################################################ + +locations="$HOME/docs/data/bkup/locations" +ops="-ahv --delete --progress" + +if [ "$1" = "-c" ]; then + srckey="$2" + dstkey="$3" +else + if [ "$3" != "-c" ]; then + ops="-ahvn --delete" + fi + srckey="$1" + dstkey="$2" +fi + +if [ -z $srckey ] || [ -z $dstkey ]; then + echo "Usage: bkup [-c] <source shortcut> <destination shortcut> [-c]" + exit 1 +fi + +relsrc="$(grep -E "src[[:space:]]+$srckey" "$locations" | cut -f3)" +if [ -z "$relsrc" ]; then + echo "Source shortcut not found" + exit 1 +fi +target="$(echo "$relsrc" | awk -F'/' '{print $(NF)}')" + +reldst="$(grep -E "dst[[:space:]]+$dstkey[[:space:]]+" "$locations" | cut -f3)" +if [ -z "$reldst" ]; then + echo "Destination shortcut not found" + exit 1 +fi + +rsync $ops "$relsrc/" "$reldst$target/" |