Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
comp-backup
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Container registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ITS
comp-backup
Commits
56179154
Commit
56179154
authored
1 month ago
by
efer
Browse files
Options
Downloads
Patches
Plain Diff
macos download for loop + polish
parent
b1abecaf
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
comp-backup-install.sh
+42
-42
42 additions, 42 deletions
comp-backup-install.sh
with
42 additions
and
42 deletions
comp-backup-install.sh
+
42
−
42
View file @
56179154
...
...
@@ -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
"
\n
No systemd - Backup will need to be run manually
\n
"
echo
-e
$Y_
"
\n
No 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
"Loo
king for backup script..."
echo
-e
"
\n
Chec
king 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
"
B
ackup script
a
lready installed
\n
"
echo
-e
"
[b
ackup script
]"
$G_
"A
lready installed
\n
"
$_N
exit
0
fi
elif
[
!
-d
$BIN_DIR
]
;
then
...
...
@@ -205,7 +205,7 @@ fi
#
# PC Specific Variables
#
echo
-n
-
e
"
\n
Enter the hostname (eg. comp-nbXXXX) [
$HOST
]: "
echo
-ne
"
\n
Enter the hostname (eg. comp-nbXXXX) [
$HOST
]: "
read
ANS
case
$ANS
in
""
)
...
...
@@ -217,7 +217,7 @@ esac
#
# SSH
#
echo
-e
"
\n
Checking ssh..."
echo
-e
"
\n
Checking
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
f
grep
-q
x
"[compbackup]"
$RCLONE_DIR
/rclone.conf
grep
-
F
q
"[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 "
\n
Snapshots 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 "
\n
Selected 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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment