11#! /bin/bash
22
3- # env variables
4- export ROOT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
3+ # === vars ===
4+ ROOT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
55
6+ # === func ===
67# sudo temp for unattended install
78keep_alive_sudo () {
89 if sudo -v; then
@@ -20,14 +21,60 @@ keep_alive_sudo() {
2021 return 1
2122 fi
2223}
24+ # installing required software
25+ install_requirements () {
26+ sudo pacman -Syu openssh borg rsync && return 0
27+ return 1
28+ }
29+ # rsync recovery
30+ make_recovery () {
31+ # recovery locations
32+ declare -A sync_dirs=(
33+ [" $BORG_HOME /" ]=" $HOME "
34+ )
35+ # make recovery with borg archive to local OS
36+ for source in " ${! sync_dirs[@]} " ; do
37+ dest=" ${sync_dirs[$source]} " # key(source) -> value(dest)
38+ if [[ -e " $source " && -e " $dest " ]]; then
39+ rsync -avP --exclude-from=" $ROOT_DIR /exclude.txt" " $source " " $dest " && echo " successfully synchronized from *$source * to *$dest *"
40+ else
41+ echo " *$source * or *$dest * doesn't exists; skipping *$source * -> *$dest *"
42+ fi
43+ done
44+ }
2345
46+ # === pre act ===
2447# keep alive sudo permission
2548keep_alive_sudo || exit 1
49+ # pre install required software
50+ prefix=" installing software requirements ..."
51+ if install_requirements; then
52+ echo " $prefix successful"
53+ else
54+ echo " $prefix unsuccessful"
55+ exit 1
56+ fi
57+
58+ # === main ===
59+ # loading scripts
60+ source " $ROOT_DIR /packages/core.sh" # install packages & enable services
61+ source " $ROOT_DIR /borg/core.sh" # borg backup connection & mounting
62+
63+ # installing software setup
64+ install_pkgs # installing packages
65+ setup_services # enabling & setting up services
2666
27- # execute installation & recovery
28- source " $ROOT_DIR /inst.sh" # setup package requirements
29- source " $ROOT_DIR /borgserver.sh" # borg backup & rsync as recovery method
67+ # copying backup to local OS using rsync
68+ make_recovery
3069
70+ # === post act ===
71+ # unmount used archive
72+ prefix=" unmounting 'latest::$latest ' at '$MOUNT_DIR ' ..."
73+ if do_unmount; then
74+ echo " $prefix successful"
75+ else
76+ echo " $prefix unsuccessful"
77+ fi
3178# undo keep alive sudo permission
3279if [[ -n " $keep_alive " ]] && kill -0 " $keep_alive " 2> /dev/null; then
3380 kill " $keep_alive " && echo " removed keep-alive (sudo) process"
0 commit comments