Skip to content
Snippets Groups Projects
Commit 56179154 authored by efer's avatar efer
Browse files

macos download for loop + polish

parent b1abecaf
No related branches found
No related tags found
No related merge requests found
......@@ -26,7 +26,7 @@ SERIAL="/etc/dtuserial"
CONF_DIR="$H/.config/$SCRIPTNAME"
FILE_DIR="$H/.local/$SCRIPTNAME"
LOGNAME="backup_logfile"
RCLONE_DL="https://databin.compute.dtu.dk/pkgs/$SCRIPTNAME"
MAC_DL="https://databin.compute.dtu.dk/pkgs/$SCRIPTNAME"
FILTER_URL="https://lab.compute.dtu.dk/ITS/comp-backup-templates/-/raw/main"
ITSAGEPUBLICKEY="age1skk0tur4vfgvqpy7mgf5pp8qg828tyh5w27tttfe6ec6tw8m9ycsvpkt9s"
......@@ -57,10 +57,10 @@ echo
# SUDO check
#
chksudo() {
echo "Checking sudo rights"
echo "Checking for sudo rights..."
sudo -l &>/dev/null
if [ $? -ne 0 ]; then
echo -e $Y_"You need sudo rights to continue."$_N
echo -e "[sudo]" $R_"You need sudo rights to continue"$_N
exit 1
fi
echo -e "[sudo]" $G_"OK"$_N
......@@ -78,24 +78,21 @@ if [ $HOST_OS = 'Darwin' ]; then
NOTIFY1='osascript -e "display notification \"Backup did not complete\" with title \"DTU Compute backup script\""'
# Check for necessary programs
HOST_ARCH=$(uname -m)
which rclone &>/dev/null
echo "Checking for dependencies..."
for prog in rclone age; do
which $prog &>/dev/null
if [ $? -ne 0 ]; then
if [ $HOST_ARCH = 'x86_64' ]; then
curl -s $RCLONE_DL/rclone_mac_intel -o rclone --output-dir $BIN_DIR --create-dirs
curl -s $MAC_DL/$prog\_mac_intel -o $prog --output-dir $BIN_DIR --create-dirs
else
curl -s $RCLONE_DL/rclone_mac_arm -o rclone --output-dir $BIN_DIR --create-dirs
fi
chmod +x $BIN_DIR/rclone
curl -s $MAC_DL/$prog\_mac_arm -o $prog --output-dir $BIN_DIR --create-dirs
fi
which age &>/dev/null
if [ $? -ne 0 ]; then
if [ $HOST_ARCH = 'x86_64' ]; then
curl -s $RCLONE_DL/age_mac_intel -o age --output-dir $BIN_DIR
chmod +x $BIN_DIR/$prog
echo -e "[$prog]" $G_"Installed"$_N
else
curl -s $RCLONE_DL/age_mac_arm -o age --output-dir $BIN_DIR
fi
chmod +x $BIN_DIR/age
echo -e "[$prog]" $G_"OK"$_N
fi
done
elif [ $HOST_OS = 'Linux' ]; then
HOST=$(hostname -s)
......@@ -108,16 +105,17 @@ elif [ $HOST_OS = 'Linux' ]; then
PKGMAN="dnf"
fi
# Check for necessary programs
echo "Checking for dependencies..."
for prog in rclone age; do
which $prog &>/dev/null
if [ $? -ne 0 ] ; then
if [[ -z $PKGMAN ]]; then
echo -e $R_"rclone command not installed"$_N
echo -e "[dependency] "$R_"$prog command not installed"$_N
echo -e "Install it using your distro package manager or manually from $prog project website"
echo -e "Then run this script again afterwards\n"
exit 1
else
echo -e $Y_"Installing $prog using $PKGMAN"$_N "- you may be asked for your password"
echo -e "[dependency]" $Y_"Installing $prog using $PKGMAN"$_N "- you may be asked for your password"
chksudo
sudo $PKGMAN -y install $prog &>/dev/null
if [ $? -ne 0 ]; then
......@@ -125,16 +123,18 @@ elif [ $HOST_OS = 'Linux' ]; then
echo -e "Please install manually from $prog project website and run this script again afterwards\n"
exit 1
else
echo -e "[$prog]" $G_"OK"$_N
echo -e "[$prog]" $G_"Installed"$_N
fi
fi
else
echo -e "[$prog]" $G_"OK"$_N
fi
done
# SYSTEMD
which systemctl &>/dev/null
if [ $? -ne 0 ]; then
SYSTEMD=0
echo -e "\nNo systemd - Backup will need to be run manually\n"
echo -e $Y_"\nNo systemd - Backup will need to be run manually\n"$_N
else
SYSTEMD=1
UNIT_DIR="$H/.config/systemd/user"
......@@ -142,7 +142,7 @@ elif [ $HOST_OS = 'Linux' ]; then
fi
else
echo "OS not supportet"
echo -e $R_"OS not supportet"$_N
exit 1
fi
......@@ -167,14 +167,14 @@ if [ ! -d $FILE_DIR ]; then
mkdir -p $FILE_DIR/old &>/dev/null
fi
echo "Looking for backup script..."
echo -e "\nChecking for backup script..."
if [ -x $BIN_DIR/$SCRIPTNAME-$RUSER ]; then
mv $BIN_DIR/$SCRIPTNAME-$RUSER $FILE_DIR/old/
fi
if [ -x $BIN_DIR/$SCRIPTNAME ]; then
ver=$(grep "version=[0-9]\+" $BIN_DIR/$SCRIPTNAME | cut -d "=" -f 2)
if [ $ver -lt $VERSION ]; then
echo -e $Y_"New script version"$_N "*$VERSION*" $Y_"will be installed"$_N
echo -e "[backup script]" $Y_"New version *$VERSION* will be installed"$_N
if [ $HOST_OS = 'Linux' ]; then
if [ $SYSTEMD = 1 ]; then
systemctl --user stop $SCRIPTNAME.timer &>/dev/null
......@@ -182,7 +182,7 @@ if [ -x $BIN_DIR/$SCRIPTNAME ]; then
fi
fi
else
echo -e "Backup script already installed\n"
echo -e "[backup script]" $G_"Already installed\n"$_N
exit 0
fi
elif [ ! -d $BIN_DIR ]; then
......@@ -205,7 +205,7 @@ fi
#
# PC Specific Variables
#
echo -n -e "\nEnter the hostname (eg. comp-nbXXXX) [$HOST]: "
echo -ne "\nEnter the hostname (eg. comp-nbXXXX) [$HOST]: "
read ANS
case $ANS in
"")
......@@ -217,7 +217,7 @@ esac
#
# SSH
#
echo -e "\nChecking ssh..."
echo -e "\nChecking for ssh..."
grep $TARGETNODE $H/.ssh/known_hosts &>/dev/null
if [ $? -ne 0 ]; then
if [ ! -d ~/.ssh ]; then
......@@ -233,7 +233,7 @@ if [ -f $SSHKEY ]; then
if [ $? -ne 0 ]; then
echo "Installing public key..."
ssh-copy-id -i $SSHKEY $RUSER@$TARGETNODE &>/dev/null
echo -e "[ssh]" $G_"OK"$_N
echo -e "[ssh]" $G_"Done"$_N
else
echo -e "[ssh]" $G_"OK"$_N
fi
......@@ -241,7 +241,7 @@ else
echo "Creating SSH keys"
ssh-keygen -q -f $SSHKEY -C $SCRIPTNAME-$RUSER@$HOST -N '' &>/dev/null
ssh-copy-id -i $SSHKEY $RUSER@$TARGETNODE &>/dev/null
echo -e "[ssh]" $G_"OK"$_N
echo -e "[ssh]" $G_"Done"$_N
fi
#
......@@ -258,9 +258,9 @@ if [ $? = 0 ]; then
else
ssh -i $SSHKEY $RUSER@$TARGETNODE "mkdir -p $RHOME/$SCRIPTNAME/$HOST/backup && chmod 700 $RHOME/$SCRIPTNAME/$HOST"
if [ $? = 0 ]; then
echo -e $G_"Created backup dir"$_N
echo -e "[backup dir]" $G_"Created"$_N
else
echo -e $R_"Failed to create backup dir"$_N
echo -e "[backup dir]" $R_"Failed to create"$_N
exit 1
fi
fi
......@@ -278,10 +278,11 @@ if [ ! -f "$SERIAL" ]; then
fi
if [ $? -ne 0 ]; then
SERIALNO="_"
echo -e $R_"Problem during computer serial creation..."$_N
echo -e "[computer serial]" $R_"Problem during creation"$_N
else
scp -i $SSHKEY $SERIAL $RUSER@$TARGETNODE:$RHOME/$SCRIPTNAME/$HOST/ &>/dev/null
SERIALNO=$(cat $SERIAL)
echo -e "[computer serial]" $G_"OK"$_N
echo -e "[computer serial]" $G_"Created"$_N
fi
else
scp -i $SSHKEY $SERIAL $RUSER@$TARGETNODE:$RHOME/$SCRIPTNAME/$HOST/ &>/dev/null
......@@ -345,7 +346,7 @@ if [ ! -d $RCLONE_DIR ]; then
mkdir -p $RCLONE_DIR
rcloneconf
elif [ -f $RCLONE_DIR/rclone.conf ]; then
fgrep -qx "[compbackup]" $RCLONE_DIR/rclone.conf
grep -Fq "[compbackup]" $RCLONE_DIR/rclone.conf
if [ $? -ne 0 ]; then
rcloneconf
fi
......@@ -387,7 +388,7 @@ if [ $? -eq 0 ]; then
fi
fi
else
echo -e "[rclone filter]" $R_"Cannot download filter template from server..."$_N
echo -e "[rclone filter]" $R_"Cannot download filter template from server"$_N
exit 1
fi
}
......@@ -474,7 +475,7 @@ snapshots(){
mytime="latest"
snapselect="compbackup:"
else
echo "Snapshots available in '$SNAPDIR':"
echo -e "\nSnapshots available in '$SNAPDIR':\n"
IFS=$'\n' read -rd '' -a fileListArray <<<"\$fileList"
for i in "\${!fileListArray[@]}"; do
......@@ -483,6 +484,7 @@ snapshots(){
echo "\$((i + 1)): \$mytime"
done
echo
while true; do
read -rp "Enter the number of the file you want to view: " selection
if [[ "\$selection" =~ ^[0-9]+$ ]] && ((selection >= 1 && selection <= \${#fileListArray[@]})); then
......@@ -503,15 +505,13 @@ snapshots(){
echo \$snapvar > /tmp/rclone_snapshot
fi
echo -e "\nSelected restore point: \$mytime\n"
echo -e "\n$Y_ Selected restore point:$_N \$mytime\n"
echo -e "Next run these commands:\n"
echo -e "$G_ source /tmp/rclone_snapshot\n rclone ls compbackup:\n$_N"
echo -e "Example of copying a folder back:\n"
echo -e "$G_ rclone copy compbackup:${RHOME#?}/Myproject ~/Myproject_restore\n $_N"
}
# Check rclone filter
defaultfilter() {
curl -s \$FILTER|grep -q $SCRIPTNAME
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment