-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathduplicacy_rclone_backup.sh
76 lines (71 loc) · 2.26 KB
/
duplicacy_rclone_backup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
#Script to automate mounting cloud volume with Rclone and backup with Duplicacy.
#Slipperyclock 12/2018
LAST=0
MOUNTED=0
TAG=$HOSTNAME-$(date +%Y-%m-%d-%H%M)
STORAGE=(OPTIONAL)RCLONE_STORAGENAME
REPOSITORY=/MY/BACKUP/SOURCE
REMOTE_PATH=/MY/BACKUP/DESTINATION
RCLONE_REMOTE=REMOTELOCATION:/BACKUP/DESTINATION/FOR/RCLONE/TO/MOUNT
LOG=/var/log/duplicacy/$HOSTNAME_.log
DAY=$(date +%d)
is_mounted () {
df | grep -q $REMOTE_PATH; LAST=$?
if [ $LAST = 0 ]
then
# Set Mounted to true
MOUNTED=0;
elif [ $LAST = 1 ]
then
# Set Mounted to false
MOUNTED=1
else
echo "IDK what to tell you but it failed: $LAST"
fi
}
is_mounted
if [ $MOUNTED = 1 ]
then
echo "Destination not mounted, mounting now."
echo "With Command:rclone mount $RCLONE_REMOTE $REMOTE_PATH";
rclone mount $RCLONE_REMOTE $REMOTE_PATH&
sleep 3
is_mounted
fi
if [ $MOUNTED = 0 ]
then
sudo -u $USER DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "$STORAGE $HOSTNAME" "Start @$(date)"
cd $REPOSITORY
echo "[*] [*] [*] [*] [*] Begin Backup of $REPOSITORY $(date) [*] [*] [*] [*] [*]" >> $LOG
echo "[*]">> $LOG
echo "[*] Listing Repository">> $LOG
duplicacy list >> $LOG
echo "[*] ">> $LOG
echo "[*] Begin duplicacy backup of $REPOSITORY to $STORAGE">> $LOG
# every 14 days do a hash job
if [ $DAY -eq 14 ] || [ $DAY -eq 28 ]
then
echo "[*] It's Hash day" >> $LOG
duplicacy backup -t $TAG -threads 1 -storage $STORAGE -stats -hash >> $LOG
else
duplicacy backup -t $TAG -threads 1 -storage $STORAGE -stats >> $LOG
fi
echo "[*] Complete">> $LOG
echo "[*]">> $LOG
echo "[*] Initiate Prune">> $LOG
duplicacy prune -keep 0:360 -keep 30:180 -keep 7:30 -keep 1:7 >> $LOG
echo "[*] Complete">> $LOG
echo "[*]" >> $LOG
echo "[*] List Repository" >> $LOG
duplicacy list >> $LOG
fusermount -uz $REMOTE_PATH
echo "[*] [*] [*] [*] [*] DONE $(date) [*] [*] [*] [*] [*]" >> $LOG
echo "" >> $LOG
echo "" >> $LOG
sudo -u $USER DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "$STORAGE $HOSTNAME" "End $REPOSITORY @$(date)"
else
echo "[*] "
echo "[*] "
echo "[*] MOUNT FAILED NO BACKUP"
fi