forked from ramirojoaquin/vestacp-borg-incremental-backups
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbackup-execute-bitrixvm.sh
executable file
·127 lines (96 loc) · 3.75 KB
/
backup-execute-bitrixvm.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/bash -l
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
source $CURRENT_DIR/config.ini
### Variables ###
# Set script start time
START_TIME=`date +%s`
# Exclude is a temp file that stores dirs that we dont want to backup
EXCLUDE=$CURRENT_DIR/exclude
# Set backup archive name to current day
ARCHIVE=$(date +'%F--%H-%M')
### Start processing ###
# Dump databases to corresponding user dirs
$CURRENT_DIR/dump-databases-bitrixvm.sh
COUNT=0
USER="bitrix"
USER_DIR="/home/$USER"
echo "$(date +'%F %T') ########## Processing user $USER ##########"
echo
# Clean exclusion list
if [ -f "$EXCLUDE" ]; then
rm $EXCLUDE
fi
# Build exclusion list
# No need for drush backups, tmp folder and .cache dir
echo "$USER_DIR/drush-backups" >> $EXCLUDE
echo "$USER_DIR/backups" >> $EXCLUDE
echo "$USER_DIR/tmp" >> $EXCLUDE
echo "$USER_DIR/.cache" >> $EXCLUDE
WEB_DIR="$USER_DIR/www"
if [ -d "$WEB_DIR/bitrix/cache" ]; then
echo "$WEB_DIR/bitrix/cache/*" >> $EXCLUDE
echo "$WEB_DIR/bitrix/managed_cache/*" >> $EXCLUDE
echo "$WEB_DIR/bitrix/html_pages/*/*" >> $EXCLUDE
echo "$WEB_DIR/bitrix/backup/*" >> $EXCLUDE
echo "$WEB_DIR/upload/resize_cache/*" >> $EXCLUDE
fi
for WEB_DIR in $USER_DIR/ext_www/*; do
if [ -d "$WEB_DIR/bitrix/cache" ]; then
echo "$WEB_DIR/bitrix/cache/*" >> $EXCLUDE
echo "$WEB_DIR/bitrix/managed_cache/*" >> $EXCLUDE
echo "$WEB_DIR/bitrix/html_pages/*/*" >> $EXCLUDE
echo "$WEB_DIR/bitrix/backup/*" >> $EXCLUDE
echo "$WEB_DIR/upload/resize_cache/*" >> $EXCLUDE
fi
done
# Set user borg repo path
USER_REPO=$REPO_USERS_DIR/$USER
# copy crontabs in userdir
if [ -e "/var/spool/cron/$USER" ]; then
mkdir -p /home/$USER/conf-backups/var/spool/
cp -af /var/spool/cron /home/$USER/conf-backups/var/spool/
fi
# Check if repo was initialized, if its not we perform borg init
# if ! [ -d "$USER_REPO/data" ]; then
# echo "-- No repo found. Initializing new borg repository $USER_REPO"
# mkdir -p $USER_REPO
borg init $OPTIONS_INIT $USER_REPO
# fi
echo "-- Creating new backup archive $USER_REPO::$ARCHIVE"
borg create $OPTIONS_CREATE $USER_REPO::$ARCHIVE $USER_DIR --exclude-from=$EXCLUDE
echo "-- Cleaning old backup archives"
borg prune $OPTIONS_PRUNE $USER_REPO
borg compact $USER_REPO
let COUNT++
echo
echo "$(date +'%F %T') ########## $COUNT USERS PROCESSED ##########"
# We dont need exclude list anymore
if [ -f "$EXCLUDE" ]; then
rm $EXCLUDE
fi
echo
echo
echo "$(date +'%F %T') #################### SERVER LEVEL BACKUPS #####################"
echo "$(date +'%F %T') ########## Executing server config backup: $ETC_DIR ##########"
# if ! [ -d "$REPO_ETC/data" ]; then
# echo "-- No repo found. Initializing new borg repository $REPO_ETC"
# mkdir -p $REPO_ETC
borg init $OPTIONS_INIT $REPO_ETC
# fi
echo "-- Creating new backup archive $REPO_ETC::$ARCHIVE"
borg create $OPTIONS_CREATE $REPO_ETC::$ARCHIVE $ETC_DIR
echo "-- Cleaning old backup archives"
borg prune $OPTIONS_PRUNE $REPO_ETC
borg compact $REPO_ETC
echo
# if [[ ! -z "$REMOTE_BACKUP_SERVER" && ! -z "$REMOTE_BACKUP_SERVER_DIR" ]]; then
# echo
# echo "$(date +'%F %T') #################### SYNC BACKUP DIR $BACKUP_DIR TO REMOTE SERVER: $REMOTE_BACKUP_SERVER:$REMOTE_BACKUP_SERVER_DIR ####################"
# rsync -za --delete --stats $BACKUP_DIR/ $REMOTE_BACKUP_SERVER_USER@$REMOTE_BACKUP_SERVER:$REMOTE_BACKUP_SERVER_DIR/
# fi
echo
echo "$(date +'%F %T') #################### BACKUP COMPLETED ####################"
END_TIME=`date +%s`
RUN_TIME=$((END_TIME-START_TIME))
echo "-- Execution time: $(date -u -d @${RUN_TIME} +'%T')"
echo