浏览代码

Tidying backup utils

Bob Mottram 7 年前
父节点
当前提交
fee71d392e
共有 1 个文件被更改,包括 233 次插入226 次删除
  1. 233
    226
      src/freedombone-utils-backup

+ 233
- 226
src/freedombone-utils-backup 查看文件

52
 function suspend_site {
52
 function suspend_site {
53
     # suspends a given website
53
     # suspends a given website
54
     SUSPENDED_SITE="$1"
54
     SUSPENDED_SITE="$1"
55
-    nginx_dissite $SUSPENDED_SITE
55
+    nginx_dissite "$SUSPENDED_SITE"
56
     systemctl reload nginx
56
     systemctl reload nginx
57
 }
57
 }
58
 
58
 
59
 function restart_site {
59
 function restart_site {
60
     # restarts a given website
60
     # restarts a given website
61
-    if [ ! $SUSPENDED_SITE ]; then
61
+    if [ ! "$SUSPENDED_SITE" ]; then
62
         return
62
         return
63
     fi
63
     fi
64
-    nginx_ensite $SUSPENDED_SITE
64
+    nginx_ensite "$SUSPENDED_SITE"
65
     systemctl reload nginx
65
     systemctl reload nginx
66
     SUSPENDED_SITE=
66
     SUSPENDED_SITE=
67
 }
67
 }
79
     fi
79
     fi
80
 
80
 
81
     gpg_agent_setup root
81
     gpg_agent_setup root
82
-    gpg_agent_setup $MY_USERNAME
82
+    gpg_agent_setup "$MY_USERNAME"
83
 
83
 
84
     # Generate a GPG key for backups
84
     # Generate a GPG key for backups
85
     BACKUP_KEY_EXISTS=$(gpg_key_exists "$MY_USERNAME" "$MY_NAME (backup key)")
85
     BACKUP_KEY_EXISTS=$(gpg_key_exists "$MY_USERNAME" "$MY_NAME (backup key)")
86
     if [[ $BACKUP_KEY_EXISTS == "no" ]]; then
86
     if [[ $BACKUP_KEY_EXISTS == "no" ]]; then
87
-        echo 'Key-Type: eddsa' > /home/$MY_USERNAME/gpg-genkey.conf
88
-        echo 'Key-Curve: Ed25519' >> /home/$MY_USERNAME/gpg-genkey.conf
89
-        echo 'Subkey-Type: eddsa' >> /home/$MY_USERNAME/gpg-genkey.conf
90
-        echo 'Subkey-Curve: Ed25519' >> /home/$MY_USERNAME/gpg-genkey.conf
91
-        echo "Name-Real:  $MY_NAME" >> /home/$MY_USERNAME/gpg-genkey.conf
92
-        echo "Name-Email: $MY_EMAIL_ADDRESS" >> /home/$MY_USERNAME/gpg-genkey.conf
93
-        echo "Name-Comment: backup key" >> /home/$MY_USERNAME/gpg-genkey.conf
94
-        echo 'Expire-Date: 0' >> /home/$MY_USERNAME/gpg-genkey.conf
95
-        cat /home/$MY_USERNAME/gpg-genkey.conf
96
-        echo "Passphrase: $BACKUP_DUMMY_PASSWORD" >> /home/$MY_USERNAME/gpg-genkey.conf
97
-        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/gpg-genkey.conf
87
+        { echo 'Key-Type: eddsa';
88
+          echo 'Key-Curve: Ed25519';
89
+          echo 'Subkey-Type: eddsa';
90
+          echo 'Subkey-Curve: Ed25519';
91
+          echo "Name-Real:  $MY_NAME";
92
+          echo "Name-Email: $MY_EMAIL_ADDRESS";
93
+          echo "Name-Comment: backup key";
94
+          echo 'Expire-Date: 0'; } > "/home/$MY_USERNAME/gpg-genkey.conf"
95
+        cat "/home/$MY_USERNAME/gpg-genkey.conf"
96
+        echo "Passphrase: $BACKUP_DUMMY_PASSWORD" >> "/home/$MY_USERNAME/gpg-genkey.conf"
97
+        chown "$MY_USERNAME":"$MY_USERNAME" "/home/$MY_USERNAME/gpg-genkey.conf"
98
         echo $'Backup key does not exist. Creating it.'
98
         echo $'Backup key does not exist. Creating it.'
99
-        su -m root -c "gpg --homedir /home/$MY_USERNAME/.gnupg --batch --full-gen-key /home/$MY_USERNAME/gpg-genkey.conf" - $MY_USERNAME
100
-        chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.gnupg
99
+        su -m root -c "gpg --homedir /home/$MY_USERNAME/.gnupg --batch --full-gen-key /home/$MY_USERNAME/gpg-genkey.conf" - "$MY_USERNAME"
100
+        chown -R "$MY_USERNAME":"$MY_USERNAME" "/home/$MY_USERNAME/.gnupg"
101
 
101
 
102
-        shred -zu /home/$MY_USERNAME/gpg-genkey.conf
102
+        shred -zu "/home/$MY_USERNAME/gpg-genkey.conf"
103
         echo $'Checking that the Backup key was created'
103
         echo $'Checking that the Backup key was created'
104
         BACKUP_KEY_EXISTS=$(gpg_key_exists "$MY_USERNAME" "$MY_NAME (backup key)")
104
         BACKUP_KEY_EXISTS=$(gpg_key_exists "$MY_USERNAME" "$MY_NAME (backup key)")
105
         if [[ $BACKUP_KEY_EXISTS == "no" ]]; then
105
         if [[ $BACKUP_KEY_EXISTS == "no" ]]; then
108
         fi
108
         fi
109
     fi
109
     fi
110
 
110
 
111
-    MY_BACKUP_KEY_ID=$(su -c "gpg --list-keys \"$MY_NAME (backup key)\"" - $MY_USERNAME | sed -n '2p' | sed 's/^[ \t]*//')
111
+    MY_BACKUP_KEY_ID=$(su -c "gpg --list-keys \"$MY_NAME (backup key)\"" - "$MY_USERNAME" | sed -n '2p' | sed 's/^[ \t]*//')
112
     echo "Backup key: $MY_BACKUP_KEY_ID"
112
     echo "Backup key: $MY_BACKUP_KEY_ID"
113
     MY_BACKUP_KEY=/home/$MY_USERNAME/backup_key
113
     MY_BACKUP_KEY=/home/$MY_USERNAME/backup_key
114
-    su -m root -c "gpg --homedir /home/$MY_USERNAME/.gnupg --output ${MY_BACKUP_KEY}_public.asc --armor --export $MY_BACKUP_KEY_ID" - $MY_USERNAME
114
+    su -m root -c "gpg --homedir /home/$MY_USERNAME/.gnupg --output ${MY_BACKUP_KEY}_public.asc --armor --export $MY_BACKUP_KEY_ID" - "$MY_USERNAME"
115
 
115
 
116
-    if [ ! -f ${MY_BACKUP_KEY}_public.asc ]; then
116
+    if [ ! -f "${MY_BACKUP_KEY}_public.asc" ]; then
117
         echo 'Public backup key could not be exported'
117
         echo 'Public backup key could not be exported'
118
         exit 36829
118
         exit 36829
119
     fi
119
     fi
120
 
120
 
121
-    su -m root -c "echo '$BACKUP_DUMMY_PASSWORD' | gpg --homedir /home/$MY_USERNAME/.gnupg --output ${MY_BACKUP_KEY}_private.asc --armor --batch --passphrase-fd 0 --export-secret-key $MY_BACKUP_KEY_ID" - $MY_USERNAME
121
+    su -m root -c "echo '$BACKUP_DUMMY_PASSWORD' | gpg --homedir /home/$MY_USERNAME/.gnupg --output ${MY_BACKUP_KEY}_private.asc --armor --batch --passphrase-fd 0 --export-secret-key $MY_BACKUP_KEY_ID" - "$MY_USERNAME"
122
 
122
 
123
-    if [ ! -f ${MY_BACKUP_KEY}_private.asc ]; then
123
+    if [ ! -f "${MY_BACKUP_KEY}_private.asc" ]; then
124
         echo 'Private backup key could not be exported'
124
         echo 'Private backup key could not be exported'
125
         exit 29235
125
         exit 29235
126
     fi
126
     fi
127
 
127
 
128
     # import backup key to root user
128
     # import backup key to root user
129
-    gpg --import --import ${MY_BACKUP_KEY}_public.asc
130
-    echo '$BACKUP_DUMMY_PASSWORD' | gpg --batch --passphrase-fd 0 --allow-secret-key-import --import ${MY_BACKUP_KEY}_private.asc
129
+    gpg --import --import "${MY_BACKUP_KEY}_public.asc"
130
+    echo "$BACKUP_DUMMY_PASSWORD" | gpg --batch --passphrase-fd 0 --allow-secret-key-import --import "${MY_BACKUP_KEY}_private.asc"
131
 
131
 
132
-    shred -zu ${MY_BACKUP_KEY}_public.asc
133
-    shred -zu ${MY_BACKUP_KEY}_private.asc
132
+    shred -zu "${MY_BACKUP_KEY}_public.asc"
133
+    shred -zu "${MY_BACKUP_KEY}_private.asc"
134
 
134
 
135
     mark_completed "${FUNCNAME[0]}"
135
     mark_completed "${FUNCNAME[0]}"
136
 }
136
 }
137
 
137
 
138
 function backup_to_friends_servers {
138
 function backup_to_friends_servers {
139
     # update crontab
139
     # update crontab
140
-    echo '#!/bin/bash' > /etc/cron.daily/backuptofriends
141
-    echo "if [ -f /usr/local/bin/${PROJECT_NAME}-backup-remote ]; then" >> /etc/cron.daily/backuptofriends
142
-    echo "    /usr/local/bin/${PROJECT_NAME}-backup-remote" >> /etc/cron.daily/backuptofriends
143
-    echo 'else' >> /etc/cron.daily/backuptofriends
144
-    echo "    /usr/bin/${PROJECT_NAME}-backup-remote" >> /etc/cron.daily/backuptofriends
145
-    echo 'fi' >> /etc/cron.daily/backuptofriends
140
+    { echo '#!/bin/bash';
141
+      echo "if [ -f /usr/local/bin/${PROJECT_NAME}-backup-remote ]; then";
142
+      echo "    /usr/local/bin/${PROJECT_NAME}-backup-remote";
143
+      echo 'else';
144
+      echo "    /usr/bin/${PROJECT_NAME}-backup-remote";
145
+      echo 'fi'; } > /etc/cron.daily/backuptofriends
146
     chmod +x /etc/cron.daily/backuptofriends
146
     chmod +x /etc/cron.daily/backuptofriends
147
 }
147
 }
148
 
148
 
149
 function backup_mount_drive {
149
 function backup_mount_drive {
150
-    if [ $1 ]; then
150
+    if [ "$1" ]; then
151
         if [[ "$1" == "/dev/"* ]]; then
151
         if [[ "$1" == "/dev/"* ]]; then
152
             USB_DRIVE=$1
152
             USB_DRIVE=$1
153
         else
153
         else
157
 
157
 
158
     # get the admin user
158
     # get the admin user
159
     ADMIN_USERNAME=$(get_completion_param "Admin user")
159
     ADMIN_USERNAME=$(get_completion_param "Admin user")
160
-    if [ $2 ]; then
160
+    if [ "$2" ]; then
161
         ADMIN_USERNAME=$2
161
         ADMIN_USERNAME=$2
162
     fi
162
     fi
163
-    ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
163
+    ADMIN_NAME=$(getent passwd "$ADMIN_USERNAME" | cut -d: -f5 | cut -d, -f1)
164
 
164
 
165
-    if [ $3 ]; then
165
+    if [ "$3" ]; then
166
         RESTORE_APP=$3
166
         RESTORE_APP=$3
167
     fi
167
     fi
168
 
168
 
169
     # check that the backup destination is available
169
     # check that the backup destination is available
170
-    if [ ! -b $USB_DRIVE ]; then
170
+    if [ ! -b "$USB_DRIVE" ]; then
171
         echo $"Please attach a USB drive"
171
         echo $"Please attach a USB drive"
172
         exit 1
172
         exit 1
173
     fi
173
     fi
174
 
174
 
175
     # unmount if already mounted
175
     # unmount if already mounted
176
-    umount -f $USB_MOUNT
177
-    if [ ! -d $USB_MOUNT ]; then
178
-        mkdir $USB_MOUNT
176
+    umount -f "$USB_MOUNT"
177
+    if [ ! -d "$USB_MOUNT" ]; then
178
+        mkdir "$USB_MOUNT"
179
     fi
179
     fi
180
     if [ -f /dev/mapper/encrypted_usb ]; then
180
     if [ -f /dev/mapper/encrypted_usb ]; then
181
         rm -rf /dev/mapper/encrypted_usb
181
         rm -rf /dev/mapper/encrypted_usb
183
     cryptsetup luksClose encrypted_usb
183
     cryptsetup luksClose encrypted_usb
184
 
184
 
185
     # mount the encrypted backup drive
185
     # mount the encrypted backup drive
186
-    cryptsetup luksOpen $USB_DRIVE encrypted_usb
187
-    if [ "$?" = "0" ]; then
186
+    if cryptsetup luksOpen "$USB_DRIVE" encrypted_usb; then
188
         USB_DRIVE=/dev/mapper/encrypted_usb
187
         USB_DRIVE=/dev/mapper/encrypted_usb
189
     fi
188
     fi
190
-    mount $USB_DRIVE $USB_MOUNT
191
-    if [ ! "$?" = "0" ]; then
189
+    if ! mount "$USB_DRIVE" "$USB_MOUNT"; then
192
         echo $"There was a problem mounting the USB drive to $USB_MOUNT"
190
         echo $"There was a problem mounting the USB drive to $USB_MOUNT"
193
-        rm -rf $USB_MOUNT
191
+        rm -rf "$USB_MOUNT"
194
         exit 783452
192
         exit 783452
195
     fi
193
     fi
196
 }
194
 }
197
 
195
 
198
 function backup_unmount_drive {
196
 function backup_unmount_drive {
199
-    if [ $1 ]; then
200
-        USB_DRIVE=${1}
201
-        if [ $2 ]; then
202
-            USB_MOUNT=${2}
203
-        fi
204
-    fi
197
+    #if [ $1 ]; then
198
+    #    USB_DRIVE=${1}
199
+    #    if [ $2 ]; then
200
+    #        USB_MOUNT=${2}
201
+    #    fi
202
+    #fi
205
     sync
203
     sync
206
-    umount $USB_MOUNT
207
-    if [ ! "$?" = "0" ]; then
204
+    if ! umount "$USB_MOUNT"; then
208
         echo $"Unable to unmount the drive."
205
         echo $"Unable to unmount the drive."
209
-        rm -rf $USB_MOUNT
206
+        rm -rf "$USB_MOUNT"
210
         exit 9
207
         exit 9
211
     fi
208
     fi
212
-    rm -rf $USB_MOUNT
209
+    rm -rf "$USB_MOUNT"
213
     if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
210
     if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
214
         echo $"Unmount encrypted USB"
211
         echo $"Unmount encrypted USB"
215
         cryptsetup luksClose encrypted_usb
212
         cryptsetup luksClose encrypted_usb
226
         restart_site
223
         restart_site
227
         exit 10
224
         exit 10
228
     fi
225
     fi
229
-    if [ ! -d $USB_MOUNT/backup/${1} ]; then
230
-        mkdir -p $USB_MOUNT/backup/${1}
226
+    if [ ! -d "$USB_MOUNT/backup/${1}" ]; then
227
+        mkdir -p "$USB_MOUNT/backup/${1}"
231
     fi
228
     fi
232
-    if [ ! -d $USB_MOUNT/backup/${1}data ]; then
233
-        mkdir -p $USB_MOUNT/backup/${1}data
229
+    if [ ! -d "$USB_MOUNT/backup/${1}data" ]; then
230
+        mkdir -p "$USB_MOUNT/backup/${1}data"
234
     fi
231
     fi
235
     local_database_dir=/root/temp${1}data
232
     local_database_dir=/root/temp${1}data
236
-    if [ ! -d ${local_database_dir} ]; then
237
-        mkdir -p ${local_database_dir}
233
+    if [ ! -d "${local_database_dir}" ]; then
234
+        mkdir -p "${local_database_dir}"
238
     fi
235
     fi
239
     echo $"Obtaining ${1} database backup"
236
     echo $"Obtaining ${1} database backup"
240
     database_file_extension='sql'
237
     database_file_extension='sql'
241
-    if [ $USE_MONGODB ]; then
238
+    if [ "$USE_MONGODB" ]; then
242
         database_file_extension='mdb'
239
         database_file_extension='mdb'
243
         USE_POSTGRESQL=
240
         USE_POSTGRESQL=
244
     fi
241
     fi
245
     if [ ! $USE_POSTGRESQL ]; then
242
     if [ ! $USE_POSTGRESQL ]; then
246
-        if [ ! $USE_MONGODB ]; then
243
+        if [ ! "$USE_MONGODB" ]; then
247
             USE_MONGODB=
244
             USE_MONGODB=
248
             USE_POSTGRESQL=
245
             USE_POSTGRESQL=
249
             keep_database_running
246
             keep_database_running
250
-            mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.${database_file_extension}
247
+            mysqldump --lock-tables --password="$DATABASE_PASSWORD" "${1}" > "${local_database_dir}/${1}.${database_file_extension}"
251
         else
248
         else
252
             USE_MONGODB=
249
             USE_MONGODB=
253
             USE_POSTGRESQL=
250
             USE_POSTGRESQL=
254
-            mongodump --db ${1} --archive=${local_database_dir}/${1}.${database_file_extension} --gzip
251
+            mongodump --db "${1}" --archive="${local_database_dir}/${1}.${database_file_extension}" --gzip
255
         fi
252
         fi
256
     else
253
     else
257
         USE_MONGODB=
254
         USE_MONGODB=
258
         USE_POSTGRESQL=
255
         USE_POSTGRESQL=
259
-        cd /etc/postgresql
260
-        sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.${database_file_extension}
256
+        cd /etc/postgresql || exit 673852
257
+        # shellcheck disable=2024
258
+        sudo -u postgres pg_dump "${1}" > "${local_database_dir}/${1}.${database_file_extension}"
261
     fi
259
     fi
262
-    if [ -f ${local_database_dir}/${1}.${database_file_extension} ]; then
263
-        if [ ! -s ${local_database_dir}/${1}.${database_file_extension} ]; then
260
+    if [ -f "${local_database_dir}/${1}.${database_file_extension}" ]; then
261
+        if [ ! -s "${local_database_dir}/${1}.${database_file_extension}" ]; then
264
             echo $"${1} database could not be saved"
262
             echo $"${1} database could not be saved"
265
-            shred -zu ${local_database_dir}/*
266
-            rm -rf ${local_database_dir}
267
-            umount $USB_MOUNT
268
-            rm -rf $USB_MOUNT
263
+            shred -zu "${local_database_dir}/*"
264
+            rm -rf "${local_database_dir}"
265
+            umount "$USB_MOUNT"
266
+            rm -rf "$USB_MOUNT"
269
             restart_site
267
             restart_site
270
             exit 6835872
268
             exit 6835872
271
         fi
269
         fi
272
     else
270
     else
273
         echo $"${1} database could not be dumped"
271
         echo $"${1} database could not be dumped"
274
-        rm -rf ${local_database_dir}
275
-        umount $USB_MOUNT
276
-        rm -rf $USB_MOUNT
272
+        rm -rf "${local_database_dir}"
273
+        umount "$USB_MOUNT"
274
+        rm -rf "$USB_MOUNT"
277
         restart_site
275
         restart_site
278
         exit 738653
276
         exit 738653
279
     fi
277
     fi
282
 
280
 
283
 function backup_directory_to_usb_duplicity {
281
 function backup_directory_to_usb_duplicity {
284
     create_backups_temp_directory
282
     create_backups_temp_directory
285
-    echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --encrypt-key $MY_BACKUP_KEY_ID --full-if-older-than 4W --exclude-other-filesystems ${1} file://$USB_MOUNT/backup/${2}
283
+    echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir "$BACKUP_TEMP_DIRECTORY" --encrypt-key "$MY_BACKUP_KEY_ID" --full-if-older-than 4W --exclude-other-filesystems "${1}" "file://$USB_MOUNT/backup/${2}"
284
+    # shellcheck disable=SC2181
286
     if [ ! "$?" = "0" ]; then
285
     if [ ! "$?" = "0" ]; then
287
-        umount $USB_MOUNT
288
-        rm -rf $USB_MOUNT
286
+        umount "$USB_MOUNT"
287
+        rm -rf "$USB_MOUNT"
289
         if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
288
         if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
290
-            shred -zu ${1}/*
291
-            rm -rf ${1}
289
+            shred -zu "${1}/*"
290
+            rm -rf "${1}"
292
         fi
291
         fi
293
         function_check restart_site
292
         function_check restart_site
294
         restart_site
293
         restart_site
296
         exit 8352925
295
         exit 8352925
297
     fi
296
     fi
298
     if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
297
     if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
299
-        echo "$BACKUP_DUMMY_PASSWORD" | duplicity verify --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --encrypt-key $MY_BACKUP_KEY_ID --full-if-older-than 4W --exclude-other-filesystems ${1} file://$USB_MOUNT/backup/${2}
298
+        echo "$BACKUP_DUMMY_PASSWORD" | duplicity verify --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir "$BACKUP_TEMP_DIRECTORY" --encrypt-key "$MY_BACKUP_KEY_ID" --full-if-older-than 4W --exclude-other-filesystems "${1}" "file://$USB_MOUNT/backup/${2}"
299
+        # shellcheck disable=SC2181
300
         if [ ! "$?" = "0" ]; then
300
         if [ ! "$?" = "0" ]; then
301
-            umount $USB_MOUNT
302
-            rm -rf $USB_MOUNT
301
+            umount "$USB_MOUNT"
302
+            rm -rf "$USB_MOUNT"
303
             if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
303
             if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
304
-                shred -zu ${1}/*
305
-                rm -rf ${1}
304
+                shred -zu "${1}/*"
305
+                rm -rf "${1}"
306
             fi
306
             fi
307
             function_check restart_site
307
             function_check restart_site
308
             restart_site
308
             restart_site
314
 }
314
 }
315
 
315
 
316
 function backup_directory_to_usb {
316
 function backup_directory_to_usb {
317
-    if [ ! -d ${1} ]; then
317
+    if [ ! -d "${1}" ]; then
318
         echo $"WARNING: directory does not exist: ${1}"
318
         echo $"WARNING: directory does not exist: ${1}"
319
     else
319
     else
320
         BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
320
         BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
321
+        # shellcheck disable=SC2181
321
         if [ ! "$?" = "0" ]; then
322
         if [ ! "$?" = "0" ]; then
322
             echo $"Backup key could not be found"
323
             echo $"Backup key could not be found"
323
             function_check restart_site
324
             function_check restart_site
326
         fi
327
         fi
327
 
328
 
328
         MY_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | sed -n '2p' | sed 's/^[ \t]*//')
329
         MY_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | sed -n '2p' | sed 's/^[ \t]*//')
329
-        if [ ! -d $USB_MOUNT/backup/${2} ]; then
330
-            mkdir -p $USB_MOUNT/backup/${2}
330
+        if [ ! -d "$USB_MOUNT/backup/${2}" ]; then
331
+            mkdir -p "$USB_MOUNT/backup/${2}"
331
         fi
332
         fi
332
 
333
 
333
-        backup_directory_to_usb_duplicity ${1} ${2}
334
+        backup_directory_to_usb_duplicity "${1}" "${2}"
334
 
335
 
335
         if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
336
         if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
336
-            shred -zu ${1}/*
337
-            rm -rf ${1}
337
+            shred -zu "${1}/*"
338
+            rm -rf "${1}"
338
         fi
339
         fi
339
     fi
340
     fi
340
 }
341
 }
341
 
342
 
342
 function restore_directory_from_usb_duplicity {
343
 function restore_directory_from_usb_duplicity {
343
     create_backups_temp_directory
344
     create_backups_temp_directory
344
-    PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --force file://$USB_MOUNT/backup/${2} ${1}
345
+    PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir "$BACKUP_TEMP_DIRECTORY" --force "file://$USB_MOUNT/backup/${2}" "${1}"
346
+    # shellcheck disable=SC2181
345
     if [ ! "$?" = "0" ]; then
347
     if [ ! "$?" = "0" ]; then
346
         echo "WARNING: failed to restore $USB_MOUNT/backup/${2} to ${1}"
348
         echo "WARNING: failed to restore $USB_MOUNT/backup/${2} to ${1}"
347
     fi
349
     fi
348
-    PASSPHRASE=
349
     remove_backups_temp_directory
350
     remove_backups_temp_directory
350
 }
351
 }
351
 
352
 
352
 function restore_directory_from_usb {
353
 function restore_directory_from_usb {
353
-    if [ ! ${1} ]; then
354
+    if [ ! "${1}" ]; then
354
         echo "$USB_MOUNT/backup/${2} -> ${1}"
355
         echo "$USB_MOUNT/backup/${2} -> ${1}"
355
         echo $'No restore destination given'
356
         echo $'No restore destination given'
356
         return
357
         return
357
     fi
358
     fi
358
-    if [ ! ${2} ]; then
359
+    if [ ! "${2}" ]; then
359
         echo "$USB_MOUNT/backup/${2} -> ${1}"
360
         echo "$USB_MOUNT/backup/${2} -> ${1}"
360
         echo $'No restore source given'
361
         echo $'No restore source given'
361
         return
362
         return
362
     fi
363
     fi
363
-    if [ ! -d ${1} ]; then
364
-        mkdir ${1}
364
+    if [ ! -d "${1}" ]; then
365
+        mkdir "${1}"
365
     fi
366
     fi
366
-    restore_directory_from_usb_duplicity ${1} ${2}
367
+    restore_directory_from_usb_duplicity "${1}" "${2}"
367
 }
368
 }
368
 
369
 
369
 function restore_directory_from_friend_duplicity {
370
 function restore_directory_from_friend_duplicity {
370
     create_backups_temp_directory
371
     create_backups_temp_directory
371
-    PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --force file://$SERVER_DIRECTORY/backup/${2} ${1}
372
-    PASSPHRASE=
372
+    PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir "$BACKUP_TEMP_DIRECTORY" --force "file://$SERVER_DIRECTORY/backup/${2}" "${1}"
373
     remove_backups_temp_directory
373
     remove_backups_temp_directory
374
 }
374
 }
375
 
375
 
376
 function restore_directory_from_friend {
376
 function restore_directory_from_friend {
377
-    if [ ! ${1} ]; then
377
+    if [ ! "${1}" ]; then
378
         echo $'No restore destination given'
378
         echo $'No restore destination given'
379
         return
379
         return
380
     fi
380
     fi
381
-    if [ ! ${2} ]; then
381
+    if [ ! "${2}" ]; then
382
         echo $'No restore source given'
382
         echo $'No restore source given'
383
         return
383
         return
384
     fi
384
     fi
385
-    if [ ! -d ${1} ]; then
386
-        mkdir ${1}
385
+    if [ ! -d "${1}" ]; then
386
+        mkdir "${1}"
387
     fi
387
     fi
388
-    restore_directory_from_friend_duplicity ${1} ${2}
388
+    restore_directory_from_friend_duplicity "${1}" "${2}"
389
 }
389
 }
390
 
390
 
391
 function backup_database_to_usb {
391
 function backup_database_to_usb {
392
     database_name=$1
392
     database_name=$1
393
     local_database_dir=/root/temp${1}data
393
     local_database_dir=/root/temp${1}data
394
-    backup_database_local_usb ${database_name}
395
-    if [ ! -f ${local_database_dir}/${1}.sql ]; then
394
+    backup_database_local_usb "${database_name}"
395
+    if [ ! -f "${local_database_dir}/${1}.sql" ]; then
396
         echo $"Error backing up ${1} database to ${local_database_dir}/${1}.sql"
396
         echo $"Error backing up ${1} database to ${local_database_dir}/${1}.sql"
397
         exit 62383
397
         exit 62383
398
     fi
398
     fi
399
-    backup_directory_to_usb ${local_database_dir} ${database_name}data
399
+    backup_directory_to_usb "${local_database_dir}" "${database_name}data"
400
 }
400
 }
401
 
401
 
402
 # after user files have been restored permissions may need to be set
402
 # after user files have been restored permissions may need to be set
405
     for d in /home/*/ ; do
405
     for d in /home/*/ ; do
406
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
406
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
407
         if [[ $(is_valid_user "$USERNAME") == "1" ]]; then
407
         if [[ $(is_valid_user "$USERNAME") == "1" ]]; then
408
-            chown -R $USERNAME:$USERNAME /home/$USERNAME
408
+            chown -R "$USERNAME":"$USERNAME" "/home/$USERNAME"
409
         fi
409
         fi
410
     done
410
     done
411
 }
411
 }
412
 
412
 
413
 function backup_directory_to_friend_duplicity {
413
 function backup_directory_to_friend_duplicity {
414
     create_backups_temp_directory
414
     create_backups_temp_directory
415
-    echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --ssh-askpass --encrypt-key ${ADMIN_BACKUP_KEY_ID} --full-if-older-than 4W --exclude-other-filesystems ${1} $SERVER_DIRECTORY/backup/${2}
415
+    echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir "$BACKUP_TEMP_DIRECTORY" --ssh-askpass --encrypt-key "${ADMIN_BACKUP_KEY_ID}" --full-if-older-than 4W --exclude-other-filesystems "${1}" "$SERVER_DIRECTORY/backup/${2}"
416
+    # shellcheck disable=SC2181
416
     if [ ! "$?" = "0" ]; then
417
     if [ ! "$?" = "0" ]; then
417
-        if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
418
-            shred -zu ${1}/*
419
-            rm -rf ${1}
418
+        if [[ "${1}" == "/root/temp"* || ${1} == *"tempbackup" ]]; then
419
+            shred -zu "${1}/*"
420
+            rm -rf "${1}"
420
         fi
421
         fi
421
         function_check restart_site
422
         function_check restart_site
422
         restart_site
423
         restart_site
424
         exit 5293526
425
         exit 5293526
425
     fi
426
     fi
426
     if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
427
     if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
427
-        echo "$BACKUP_DUMMY_PASSWORD" | duplicity verify --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --ssh-askpass --encrypt-key ${ADMIN_BACKUP_KEY_ID} --full-if-older-than 4W --exclude-other-filesystems ${1} $SERVER_DIRECTORY/backup/${2}
428
+        echo "$BACKUP_DUMMY_PASSWORD" | duplicity verify --use-agent --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir "$BACKUP_TEMP_DIRECTORY" --ssh-askpass --encrypt-key "${ADMIN_BACKUP_KEY_ID}" --full-if-older-than 4W --exclude-other-filesystems "${1}" "$SERVER_DIRECTORY/backup/${2}"
429
+        # shellcheck disable=SC2181
428
         if [ ! "$?" = "0" ]; then
430
         if [ ! "$?" = "0" ]; then
429
-            if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
430
-                shred -zu ${1}/*
431
-                rm -rf ${1}
431
+            if [[ "${1}" == "/root/temp"* || ${1} == *"tempbackup" ]]; then
432
+                shred -zu "${1}/*"
433
+                rm -rf "${1}"
432
             fi
434
             fi
433
             function_check restart_site
435
             function_check restart_site
434
             restart_site
436
             restart_site
441
 
443
 
442
 function backup_directory_to_friend {
444
 function backup_directory_to_friend {
443
     BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
445
     BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)")
446
+    # shellcheck disable=SC2181
444
     if [ ! "$?" = "0" ]; then
447
     if [ ! "$?" = "0" ]; then
445
         echo $"Backup key could not be found"
448
         echo $"Backup key could not be found"
446
         function_check restart_site
449
         function_check restart_site
449
     fi
452
     fi
450
 
453
 
451
     ADMIN_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | sed -n '2p' | sed 's/^[ \t]*//')
454
     ADMIN_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | sed -n '2p' | sed 's/^[ \t]*//')
452
-    if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then
453
-        mkdir -p $SERVER_DIRECTORY/backup/${2}
455
+    if [ ! -d "$SERVER_DIRECTORY/backup/${2}" ]; then
456
+        mkdir -p "$SERVER_DIRECTORY/backup/${2}"
454
     fi
457
     fi
455
 
458
 
456
-    backup_directory_to_friend_duplicity ${1} ${2}
459
+    backup_directory_to_friend_duplicity "${1}" "${2}"
457
 
460
 
458
-    if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then
459
-        shred -zu /root/temp${2}/*
460
-        rm -rf /root/temp${2}
461
+    if [[ "${1}" == "/root/temp"* || ${1} == *"tempbackup" ]]; then
462
+        shred -zu "/root/temp${2}/*"
463
+        rm -rf "/root/temp${2}"
461
     fi
464
     fi
462
 }
465
 }
463
 
466
 
468
         restart_site
471
         restart_site
469
         exit 5783
472
         exit 5783
470
     fi
473
     fi
471
-    if [ ! -d $SERVER_DIRECTORY/backup/${1} ]; then
472
-        mkdir -p $SERVER_DIRECTORY/backup/${1}
474
+    if [ ! -d "$SERVER_DIRECTORY/backup/${1}" ]; then
475
+        mkdir -p "$SERVER_DIRECTORY/backup/${1}"
473
     fi
476
     fi
474
-    if [ ! -d $SERVER_DIRECTORY/backup/${1}data ]; then
475
-        mkdir -p $SERVER_DIRECTORY/backup/${1}data
477
+    if [ ! -d "$SERVER_DIRECTORY/backup/${1}data" ]; then
478
+        mkdir -p "$SERVER_DIRECTORY/backup/${1}data"
476
     fi
479
     fi
477
     local_database_dir=/root/temp${1}data
480
     local_database_dir=/root/temp${1}data
478
-    if [ ! -d ${local_database_dir} ]; then
479
-        mkdir -p ${local_database_dir}
481
+    if [ ! -d "${local_database_dir}" ]; then
482
+        mkdir -p "${local_database_dir}"
480
     fi
483
     fi
481
 
484
 
482
     echo "Obtaining ${1} database backup"
485
     echo "Obtaining ${1} database backup"
490
             USE_MONGODB=
493
             USE_MONGODB=
491
             USE_POSTGRESQL=
494
             USE_POSTGRESQL=
492
             keep_database_running
495
             keep_database_running
493
-            mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.${database_file_extension}
496
+            mysqldump --lock-tables --password="$DATABASE_PASSWORD" "${1}" > "${local_database_dir}/${1}.${database_file_extension}"
494
         else
497
         else
495
             USE_MONGODB=
498
             USE_MONGODB=
496
             USE_POSTGRESQL=
499
             USE_POSTGRESQL=
497
-            mongodump --db ${1} --archive=${local_database_dir}/${1}.${database_file_extension} --gzip
500
+            mongodump --db "${1}" --archive="${local_database_dir}/${1}.${database_file_extension}" --gzip
498
         fi
501
         fi
499
     else
502
     else
500
         USE_MONGODB=
503
         USE_MONGODB=
501
         USE_POSTGRESQL=
504
         USE_POSTGRESQL=
502
-        cd /etc/postgresql
503
-        sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.${database_file_extension}
505
+        cd /etc/postgresql || exit 782563472
506
+        # shellcheck disable=SC2024
507
+        sudo -u postgres pg_dump "${1}" > "${local_database_dir}/${1}.${database_file_extension}"
504
     fi
508
     fi
505
 
509
 
506
-    if [ -f ${local_database_dir}/${1}.${database_file_extension} ]; then
507
-        if [ ! -s ${local_database_dir}/${1}.${database_file_extension} ]; then
510
+    if [ -f "${local_database_dir}/${1}.${database_file_extension}" ]; then
511
+        if [ ! -s "${local_database_dir}/${1}.${database_file_extension}" ]; then
508
             echo $"${1} database could not be saved"
512
             echo $"${1} database could not be saved"
509
-            shred -zu ${local_database_dir}/*
510
-            rm -rf ${local_database_dir}
513
+            shred -zu "${local_database_dir}/*"
514
+            rm -rf "${local_database_dir}"
511
             # Send a warning email
515
             # Send a warning email
512
-            echo $"Unable to export ${1} database" | mail -s $"${PROJECT_NAME} backup to friends" $ADMIN_EMAIL_ADDRESS
516
+            echo $"Unable to export ${1} database" | mail -s $"${PROJECT_NAME} backup to friends" "$ADMIN_EMAIL_ADDRESS"
513
             function_check restart_site
517
             function_check restart_site
514
             restart_site
518
             restart_site
515
             exit 57386728
519
             exit 57386728
516
         fi
520
         fi
517
     else
521
     else
518
         echo $"${1} database could not be dumped"
522
         echo $"${1} database could not be dumped"
519
-        rm -rf ${local_database_dir}
523
+        rm -rf "${local_database_dir}"
520
         # Send a warning email
524
         # Send a warning email
521
-        echo $"Unable to dump ${1} database" | mail -s $"${PROJECT_NAME} backup to friends" $ADMIN_EMAIL_ADDRESS
525
+        echo $"Unable to dump ${1} database" | mail -s $"${PROJECT_NAME} backup to friends" "$ADMIN_EMAIL_ADDRESS"
522
         function_check restart_site
526
         function_check restart_site
523
         restart_site
527
         restart_site
524
         exit 36874289
528
         exit 36874289
527
 
531
 
528
 function backup_database_to_friend {
532
 function backup_database_to_friend {
529
     database_name=$1
533
     database_name=$1
530
-    backup_database_remote $database_name
531
-    backup_directory_to_friend /root/temp${database_name}data ${database_name}data
534
+    backup_database_remote "$database_name"
535
+    backup_directory_to_friend "/root/temp${database_name}data" "${database_name}data"
532
 }
536
 }
533
 
537
 
534
 function backup_apps {
538
 function backup_apps {
542
     for app_name in "${APPS_INSTALLED_NAMES[@]}"
546
     for app_name in "${APPS_INSTALLED_NAMES[@]}"
543
     do
547
     do
544
         echo $"Backup ${app_name}"
548
         echo $"Backup ${app_name}"
545
-        app_load_variables ${app_name}
546
-        function_check backup_${localremote}_${app_name}
547
-        backup_${localremote}_${app_name}
549
+        app_load_variables "${app_name}"
550
+        function_check "backup_${localremote}_${app_name}"
551
+        "backup_${localremote}_${app_name}"
548
         BACKUP_APPS_COMPLETED+=("${app_name}")
552
         BACKUP_APPS_COMPLETED+=("${app_name}")
549
         echo $"Backup ${app_name} completed"
553
         echo $"Backup ${app_name} completed"
550
     done
554
     done
562
     for app_name in "${APPS_INSTALLED_NAMES[@]}"
566
     for app_name in "${APPS_INSTALLED_NAMES[@]}"
563
     do
567
     do
564
         confirm_restore=
568
         confirm_restore=
565
-        if [ ! $2 ]; then
569
+        if [ ! "$2" ]; then
566
             confirm_restore=1
570
             confirm_restore=1
567
         else
571
         else
568
             if [[ "$RESTORE_APP" == "$app_name" || "$RESTORE_APP" == "all" ]]; then
572
             if [[ "$RESTORE_APP" == "$app_name" || "$RESTORE_APP" == "all" ]]; then
571
         fi
575
         fi
572
         if [ $confirm_restore ]; then
576
         if [ $confirm_restore ]; then
573
             echo $"Restoring ${app_name}"
577
             echo $"Restoring ${app_name}"
574
-            app_load_variables ${app_name}
575
-            function_check restore_${localremote}_${app_name}
576
-            restore_${localremote}_${app_name}
578
+            app_load_variables "${app_name}"
579
+            function_check "restore_${localremote}_${app_name}"
580
+            "restore_${localremote}_${app_name}"
577
             RESTORE_APPS_COMPLETED+=("${app_name}")
581
             RESTORE_APPS_COMPLETED+=("${app_name}")
578
             echo $"Restored ${app_name}"
582
             echo $"Restored ${app_name}"
579
         fi
583
         fi
584
     DATABASE_PASSWORD=
588
     DATABASE_PASSWORD=
585
     RESTORE_SUBDIR="root"
589
     RESTORE_SUBDIR="root"
586
 
590
 
587
-    if [ -d $SERVER_DIRECTORY/backup/${1}data ]; then
591
+    if [ -d "$SERVER_DIRECTORY/backup/${1}data" ]; then
588
         database_file_extension='sql'
592
         database_file_extension='sql'
589
         if [ $USE_MONGODB ]; then
593
         if [ $USE_MONGODB ]; then
590
             database_file_extension='mdb'
594
             database_file_extension='mdb'
592
         fi
596
         fi
593
         echo $"Restoring ${1} database"
597
         echo $"Restoring ${1} database"
594
         local_database_dir=/root/temp${1}data
598
         local_database_dir=/root/temp${1}data
595
-        restore_directory_from_friend ${local_database_dir} ${1}data
596
-        database_file=${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.${database_file_extension}
597
-        if [ ! -f $database_file ]; then
598
-            database_file=${local_database_dir}/${restore_app_name}.${database_file_extension}
599
+        restore_directory_from_friend "${local_database_dir}" "${1}data"
600
+        database_file="${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.${database_file_extension}"
601
+        if [ ! -f "$database_file" ]; then
602
+            database_file="${local_database_dir}/${restore_app_name}.${database_file_extension}"
599
         fi
603
         fi
600
-        if [ ! -f $database_file ]; then
604
+        if [ ! -f "$database_file" ]; then
601
             echo $"Unable to restore ${1} database"
605
             echo $"Unable to restore ${1} database"
602
-            rm -rf ${local_database_dir}
606
+            rm -rf "${local_database_dir}"
603
             exit 5289252
607
             exit 5289252
604
         fi
608
         fi
605
         if [ ! $USE_POSTGRESQL ]; then
609
         if [ ! $USE_POSTGRESQL ]; then
607
                 USE_MONGODB=
611
                 USE_MONGODB=
608
                 USE_POSTGRESQL=
612
                 USE_POSTGRESQL=
609
                 keep_database_running
613
                 keep_database_running
610
-                mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < ${database_file})
614
+                mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" "${restore_app_name}" -o < "${database_file}")
611
             else
615
             else
612
                 USE_MONGODB=
616
                 USE_MONGODB=
613
                 USE_POSTGRESQL=
617
                 USE_POSTGRESQL=
614
-                mongorestore --gzip --archive=${database_file} --db ${restore_app_name}
618
+                mongorestore --gzip --archive="${database_file}" --db "${restore_app_name}"
615
             fi
619
             fi
616
         else
620
         else
617
             USE_MONGODB=
621
             USE_MONGODB=
618
             USE_POSTGRESQL=
622
             USE_POSTGRESQL=
619
-            cd /etc/postgresql
620
-            mysqlsuccess=$(sudo -u postgres pg_restore ${database_file})
623
+            cd /etc/postgresql || exit 23784634
624
+            mysqlsuccess=$(sudo -u postgres pg_restore "${database_file}")
621
         fi
625
         fi
626
+        # shellcheck disable=SC2181
622
         if [ ! "$?" = "0" ]; then
627
         if [ ! "$?" = "0" ]; then
623
             echo "$mysqlsuccess"
628
             echo "$mysqlsuccess"
624
             exit 8735271
629
             exit 8735271
625
         fi
630
         fi
626
-        if [ -d ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data ]; then
627
-            shred -zu ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/*
631
+        if [ -d "${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data" ]; then
632
+            shred -zu "${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/*"
628
         else
633
         else
629
-            shred -zu ${local_database_dir}/*.${database_file_extension}
634
+            shred -zu "${local_database_dir}/*.${database_file_extension}"
630
         fi
635
         fi
631
-        rm -rf ${local_database_dir}
636
+        rm -rf "${local_database_dir}"
632
         echo $"Restoring ${1} installation"
637
         echo $"Restoring ${1} installation"
633
-        restore_directory_from_friend /root/temp${1} ${1}
638
+        restore_directory_from_friend "/root/temp${1}" "${1}"
634
         RESTORE_SUBDIR="var"
639
         RESTORE_SUBDIR="var"
635
-        if [ ${1} ]; then
640
+        if [ "${1}" ]; then
636
             # create directory to restore to
641
             # create directory to restore to
637
-            if [ ! -d /var/www/${2}/htdocs ]; then
638
-                mkdir -p /var/www/${2}/htdocs
639
-                chown www-data:www-data /var/www/${2}/htdocs
642
+            if [ ! -d "/var/www/${2}/htdocs" ]; then
643
+                mkdir -p "/var/www/${2}/htdocs"
644
+                chown www-data:www-data "/var/www/${2}/htdocs"
640
             fi
645
             fi
641
 
646
 
642
-            if [ -d /var/www/${2}/htdocs ]; then
643
-                restore_from_dir=/root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs
644
-                if [ ! -d /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs ]; then
645
-                    restore_from_dir=/root/temp${1}
647
+            if [ -d "/var/www/${2}/htdocs" ]; then
648
+                restore_from_dir="/root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs"
649
+                if [ ! -d "/root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs" ]; then
650
+                    restore_from_dir="/root/temp${1}"
646
                 fi
651
                 fi
647
 
652
 
648
-                if [ -d $restore_from_dir ]; then
649
-                    if [ -d /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs ]; then
650
-                        rm -rf /var/www/${2}/htdocs
651
-                        mv $restore_from_dir /var/www/${2}/
653
+                if [ -d "$restore_from_dir" ]; then
654
+                    if [ -d "/root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs" ]; then
655
+                        rm -rf "/var/www/${2}/htdocs"
656
+                        mv "$restore_from_dir" "/var/www/${2}/"
652
                     else
657
                     else
653
-                        cp -r $restore_from_dir/* /var/www/${2}/htdocs/
658
+                        cp -r "$restore_from_dir/*" "/var/www/${2}/htdocs/"
654
                     fi
659
                     fi
660
+                    # shellcheck disable=SC2181
655
                     if [ ! "$?" = "0" ]; then
661
                     if [ ! "$?" = "0" ]; then
656
                         exit 78352682
662
                         exit 78352682
657
                     fi
663
                     fi
658
-                    if [ -d /etc/letsencrypt/live/${2} ]; then
659
-                        ln -s /etc/letsencrypt/live/${2}/privkey.pem /etc/ssl/private/${2}.key
660
-                        ln -s /etc/letsencrypt/live/${2}/fullchain.pem /etc/ssl/certs/${2}.pem
664
+                    if [ -d "/etc/letsencrypt/live/${2}" ]; then
665
+                        ln -s "/etc/letsencrypt/live/${2}/privkey.pem" "/etc/ssl/private/${2}.key"
666
+                        ln -s "/etc/letsencrypt/live/${2}/fullchain.pem" "/etc/ssl/certs/${2}.pem"
661
                     else
667
                     else
662
                         # Ensure that the bundled SSL cert is being used
668
                         # Ensure that the bundled SSL cert is being used
663
-                        if [ -f /etc/ssl/certs/${2}.bundle.crt ]; then
664
-                            sed -i "s|${2}.crt|${2}.bundle.crt|g" /etc/nginx/sites-available/${2}
669
+                        if [ -f "/etc/ssl/certs/${2}.bundle.crt" ]; then
670
+                            sed -i "s|${2}.crt|${2}.bundle.crt|g" "/etc/nginx/sites-available/${2}"
665
                         fi
671
                         fi
666
                     fi
672
                     fi
667
                 fi
673
                 fi
678
     restore_app_name=$1
684
     restore_app_name=$1
679
     restore_app_domain=$2
685
     restore_app_domain=$2
680
 
686
 
681
-    if [ -d $USB_MOUNT/backup/${restore_app_name}data ]; then
687
+    if [ -d "$USB_MOUNT/backup/${restore_app_name}data" ]; then
682
         echo $"Restoring ${restore_app_name} database"
688
         echo $"Restoring ${restore_app_name} database"
683
         local_database_dir=/root/temp${restore_app_name}data
689
         local_database_dir=/root/temp${restore_app_name}data
684
-        if [ -d ${local_database_dir} ]; then
685
-            rm -rf ${local_database_dir}
690
+        if [ -d "${local_database_dir}" ]; then
691
+            rm -rf "${local_database_dir}"
686
         fi
692
         fi
687
         function_check restore_directory_from_usb
693
         function_check restore_directory_from_usb
688
         restore_directory_from_usb "${local_database_dir}" "${restore_app_name}data"
694
         restore_directory_from_usb "${local_database_dir}" "${restore_app_name}data"
691
             database_file_extension='mdb'
697
             database_file_extension='mdb'
692
             USE_POSTGRESQL=
698
             USE_POSTGRESQL=
693
         fi
699
         fi
694
-        database_file=${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.${database_file_extension}
695
-        if [ ! -f $database_file ]; then
696
-            database_file=${local_database_dir}/${restore_app_name}.${database_file_extension}
700
+        database_file="${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.${database_file_extension}"
701
+        if [ ! -f "$database_file" ]; then
702
+            database_file="${local_database_dir}/${restore_app_name}.${database_file_extension}"
697
         fi
703
         fi
698
-        if [ ! -f $database_file ]; then
704
+        if [ ! -f "$database_file" ]; then
699
             echo $"Unable to restore ${restore_app_name} database"
705
             echo $"Unable to restore ${restore_app_name} database"
700
-            rm -rf ${local_database_dir}
706
+            rm -rf "${local_database_dir}"
701
             function_check set_user_permissions
707
             function_check set_user_permissions
702
             set_user_permissions
708
             set_user_permissions
703
             function_check backup_unmount_drive
709
             function_check backup_unmount_drive
709
                 USE_MONGODB=
715
                 USE_MONGODB=
710
                 USE_POSTGRESQL=
716
                 USE_POSTGRESQL=
711
                 keep_database_running
717
                 keep_database_running
712
-                cp $database_file ~/test.sql
713
-                mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < $database_file)
718
+                cp "$database_file" ~/test.sql
719
+                mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" "${restore_app_name}" -o < "$database_file")
714
             else
720
             else
715
                 USE_MONGODB=
721
                 USE_MONGODB=
716
                 USE_POSTGRESQL=
722
                 USE_POSTGRESQL=
717
-                mongorestore --gzip --archive=$database_file --db ${restore_app_name}
723
+                mongorestore --gzip --archive="$database_file" --db "${restore_app_name}"
718
             fi
724
             fi
719
         else
725
         else
720
             USE_MONGODB=
726
             USE_MONGODB=
721
             USE_POSTGRESQL=
727
             USE_POSTGRESQL=
722
-            cd /etc/postgresql
723
-            mysqlsuccess=$(sudo -u postgres pg_restore $database_file)
728
+            cd /etc/postgresql || exit 638463
729
+            mysqlsuccess=$(sudo -u postgres pg_restore "$database_file")
724
         fi
730
         fi
731
+        # shellcheck disable=SC2181
725
         if [ ! "$?" = "0" ]; then
732
         if [ ! "$?" = "0" ]; then
726
             echo "$mysqlsuccess"
733
             echo "$mysqlsuccess"
727
             function_check set_user_permissions
734
             function_check set_user_permissions
730
             backup_unmount_drive
737
             backup_unmount_drive
731
             exit 482638995
738
             exit 482638995
732
         fi
739
         fi
733
-        if [ -d ${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data ]; then
734
-            shred -zu ${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/*
740
+        if [ -d "${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data" ]; then
741
+            shred -zu "${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/*"
735
         else
742
         else
736
-            shred -zu ${local_database_dir}/*.${database_file_extension}
743
+            shred -zu "${local_database_dir}/*.${database_file_extension}"
737
         fi
744
         fi
738
 
745
 
739
-        rm -rf ${local_database_dir}
746
+        rm -rf "${local_database_dir}"
740
         echo $"Restoring ${restore_app_name} installation"
747
         echo $"Restoring ${restore_app_name} installation"
741
-        if [ ! -d /root/temp${restore_app_name} ]; then
742
-            mkdir /root/temp${restore_app_name}
748
+        if [ ! -d "/root/temp${restore_app_name}" ]; then
749
+            mkdir "/root/temp${restore_app_name}"
743
         fi
750
         fi
744
         function_check restore_directory_from_usb
751
         function_check restore_directory_from_usb
745
         restore_directory_from_usb "/root/temp${restore_app_name}" "${restore_app_name}"
752
         restore_directory_from_usb "/root/temp${restore_app_name}" "${restore_app_name}"
746
         RESTORE_SUBDIR="var"
753
         RESTORE_SUBDIR="var"
747
-        if [ ${restore_app_domain} ]; then
754
+        if [ "${restore_app_domain}" ]; then
748
             # create directory to restore to
755
             # create directory to restore to
749
-            if [ ! -d /var/www/${restore_app_domain}/htdocs ]; then
750
-                mkdir -p /var/www/${restore_app_domain}/htdocs
751
-                chown www-data:www-data /var/www/${restore_app_domain}/htdocs
756
+            if [ ! -d "/var/www/${restore_app_domain}/htdocs" ]; then
757
+                mkdir -p "/var/www/${restore_app_domain}/htdocs"
758
+                chown www-data:www-data "/var/www/${restore_app_domain}/htdocs"
752
             fi
759
             fi
753
 
760
 
754
-            if [ -d /var/www/${restore_app_domain}/htdocs ]; then
755
-                restore_from_dir=/root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs
756
-                if [ ! -d $restore_from_dir ]; then
761
+            if [ -d "/var/www/${restore_app_domain}/htdocs" ]; then
762
+                restore_from_dir="/root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs"
763
+                if [ ! -d "$restore_from_dir" ]; then
757
                     restore_from_dir=/root/temp${restore_app_name}
764
                     restore_from_dir=/root/temp${restore_app_name}
758
                 fi
765
                 fi
759
-                if [ -d $restore_from_dir ]; then
760
-                    if [ -d /root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs ]; then
761
-                        rm -rf /var/www/${restore_app_domain}/htdocs
762
-                        mv $restore_from_dir /var/www/${restore_app_domain}/
766
+                if [ -d "$restore_from_dir" ]; then
767
+                    if [ -d "/root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs" ]; then
768
+                        rm -rf "/var/www/${restore_app_domain}/htdocs"
769
+                        mv "$restore_from_dir" "/var/www/${restore_app_domain}/"
763
                     else
770
                     else
764
-                        cp -r $restore_from_dir/* /var/www/${restore_app_domain}/htdocs/
771
+                        cp -r "$restore_from_dir/*" "/var/www/${restore_app_domain}/htdocs/"
765
                     fi
772
                     fi
773
+                    # shellcheck disable=SC2181
766
                     if [ ! "$?" = "0" ]; then
774
                     if [ ! "$?" = "0" ]; then
767
                         set_user_permissions
775
                         set_user_permissions
768
                         backup_unmount_drive
776
                         backup_unmount_drive
769
                         exit 78252429
777
                         exit 78252429
770
                     fi
778
                     fi
771
-                    if [ -d /etc/letsencrypt/live/${restore_app_domain} ]; then
772
-                        ln -s /etc/letsencrypt/live/${restore_app_domain}/privkey.pem /etc/ssl/private/${restore_app_domain}.key
773
-                        ln -s /etc/letsencrypt/live/${restore_app_domain}/fullchain.pem /etc/ssl/certs/${restore_app_domain}.pem
779
+                    if [ -d "/etc/letsencrypt/live/${restore_app_domain}" ]; then
780
+                        ln -s "/etc/letsencrypt/live/${restore_app_domain}/privkey.pem" "/etc/ssl/private/${restore_app_domain}.key"
781
+                        ln -s "/etc/letsencrypt/live/${restore_app_domain}/fullchain.pem" "/etc/ssl/certs/${restore_app_domain}.pem"
774
                     else
782
                     else
775
                         # Ensure that the bundled SSL cert is being used
783
                         # Ensure that the bundled SSL cert is being used
776
-                        if [ -f /etc/ssl/certs/${restore_app_domain}.bundle.crt ]; then
777
-                            sed -i "s|${restore_app_domain}.crt|${restore_app_domain}.bundle.crt|g" /etc/nginx/sites-available/${restore_app_domain}
784
+                        if [ -f "/etc/ssl/certs/${restore_app_domain}.bundle.crt" ]; then
785
+                            sed -i "s|${restore_app_domain}.crt|${restore_app_domain}.bundle.crt|g" "/etc/nginx/sites-available/${restore_app_domain}"
778
                         fi
786
                         fi
779
                     fi
787
                     fi
780
                 fi
788
                 fi
797
     available_variants_list=()
805
     available_variants_list=()
798
     available_system_variants
806
     available_system_variants
799
 
807
 
800
-    item_in_array "${destination_dir}" "${available_variants_list[@]}"
801
-    if [[ $? != 0 ]]; then
808
+    if ! item_in_array "${destination_dir}" "${available_variants_list[@]}"; then
802
         is_valid="no"
809
         is_valid="no"
803
     fi
810
     fi
804
 
811
 
806
 }
813
 }
807
 
814
 
808
 function backup_extra_directories {
815
 function backup_extra_directories {
809
-    if [ ! -f $BACKUP_EXTRA_DIRECTORIES ]; then
816
+    if [ ! -f "$BACKUP_EXTRA_DIRECTORIES" ]; then
810
         return
817
         return
811
     fi
818
     fi
812
 
819
 
813
     backup_type="$1"
820
     backup_type="$1"
814
 
821
 
815
     echo $"Backing up some additional directories"
822
     echo $"Backing up some additional directories"
816
-    while read backup_line
823
+    while read -r backup_line
817
     do
824
     do
818
         backup_dir=$(echo "$backup_line" | awk -F ',' '{print $1}' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
825
         backup_dir=$(echo "$backup_line" | awk -F ',' '{print $1}' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
819
         if [ -d "$backup_dir" ]; then
826
         if [ -d "$backup_dir" ]; then
831
         else
838
         else
832
             echo $"WARNING: Directory $backup_dir does not exist"
839
             echo $"WARNING: Directory $backup_dir does not exist"
833
         fi
840
         fi
834
-    done <$BACKUP_EXTRA_DIRECTORIES
841
+    done <"$BACKUP_EXTRA_DIRECTORIES"
835
 }
842
 }
836
 
843
 
837
 # NOTE: deliberately no exit 0
844
 # NOTE: deliberately no exit 0