diff --git a/scripts/sync_general.sh b/scripts/sync_general.sh new file mode 100644 index 0000000..814bfc8 --- /dev/null +++ b/scripts/sync_general.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +set -euo pipefail + +shopt -s expand_aliases +source /sync/home_internal/.bash_aliases # FSCLEANUP -> zum besseren testen +# source /sync/home_external/.bash_aliases + + +sync () { + dry_run=false + home_or_root= + update=true + in_to_ex= + while [[ $# > 0 ]]; do + case $1 in + -d | --dry ) dry_run=true; shift;; + -c | --checksum ) update=false; shift;; + --in-to-ex ) in_to_ex=true; shift;; + --ex-to-in ) in_to_ex=false; shift;; + --dir ) home_or_root=$2; shift 2;; + * ) break ;; # Anything else stops command line processing. + esac + done + + dir_external=/sync/${home_or_root}_external/ + dir_internal=/sync/${home_or_root}_internal/ + # dry-run + if [[ "$dry_run" == true ]]; then + ex_to_in= + in_to_ex= + update_or_default= + if [[ "$update" == true ]]; then + update_or_default='UPDATE' + ex_to_in=$(rsync_update $dir_external $dir_internal --dry-run) + in_to_ex=$(rsync_update $dir_internal $dir_external --dry-run) + else + update_or_default='DEFAULT' + ex_to_in=$(rsync_default $dir_external $dir_internal --dry-run) + in_to_ex=$(rsync_default $dir_internal $dir_external --dry-run) + fi + # use printf for displaying \n as newline correctly + printf "RSYNC ${update_or_default}: external -> internal:\n\n$ex_to_in\n\nRSYNC ${update_or_default}: internal -> external:\n\n$in_to_ex\n" + exit 0; + fi + + # real deal + if [[ -z "$in_to_ex" ]]; then + echo "Error. No sync direction given." + exit 1; + fi + + if [[ "$update" == true ]]; then + if [[ "$in_to_ex" == true ]]; then + rsync_update $dir_internal $dir_external + else + rsync_update $dir_external $dir_internal + fi + exit 0; + fi + if [[ "$in_to_ex" == true ]]; then + rsync_default $dir_internal $dir_external + else + rsync_default $dir_external $dir_internal + fi +} diff --git a/scripts/sync_home.sh b/scripts/sync_home.sh new file mode 100755 index 0000000..5dad6d9 --- /dev/null +++ b/scripts/sync_home.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail + +source /sync/scripts/sync_general.sh + +sync --dir home $@ diff --git a/scripts/sync_root.sh b/scripts/sync_root.sh new file mode 100755 index 0000000..ea7eb63 --- /dev/null +++ b/scripts/sync_root.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail + +source /sync/scripts/sync_general.sh + +sync --dir root $@