Sfoglia il codice sorgente

Enforce a global client name for obnam backups

Otherwise you can't restore directories to a system with a different domain name
Bob Mottram 8 anni fa
parent
commit
a50c9c6f63

+ 9
- 14
src/freedombone-restore-local Vedi File

@@ -50,7 +50,7 @@ source $PROJECT_INSTALL_DIR/${PROJECT_NAME}-vars
50 50
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
51 51
 for f in $UTILS_FILES
52 52
 do
53
-  source $f
53
+    source $f
54 54
 done
55 55
 
56 56
 USB_DRIVE=/dev/sdb1
@@ -92,13 +92,6 @@ function copy_gpg_keys {
92 92
     cp -r /home/$ADMIN_USERNAME/.gnupg /root
93 93
 }
94 94
 
95
-function restore_directory_from_usb {
96
-    if [ ! -d ${1} ]; then
97
-        mkdir ${1}
98
-    fi
99
-    obnam restore -r $USB_MOUNT/backup/${2} --to ${1}
100
-}
101
-
102 95
 function restore_config {
103 96
     if [[ $RESTORE_APP != 'all' ]]; then
104 97
         if [[ $RESTORE_APP != 'config' ]]; then
@@ -320,14 +313,16 @@ function restore_procmail {
320 313
                 echo $"Restoring procmail settings for $USERNAME"
321 314
                 temp_restore_dir=/root/tempprocmail
322 315
                 restore_directory_from_usb $temp_restore_dir procmail/$USERNAME
323
-                cp -f $temp_restore_dir/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/
324
-                if [ ! "$?" = "0" ]; then
316
+                if [ -d $temp_restore_dir ]; then
317
+                    cp -f $temp_restore_dir/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/
318
+                    if [ ! "$?" = "0" ]; then
319
+                        rm -rf $temp_restore_dir
320
+                        set_user_permissions
321
+                        backup_unmount_drive
322
+                        exit 276
323
+                    fi
325 324
                     rm -rf $temp_restore_dir
326
-                    set_user_permissions
327
-                    backup_unmount_drive
328
-                    exit 276
329 325
                 fi
330
-                rm -rf $temp_restore_dir
331 326
             fi
332 327
         done
333 328
     fi

+ 1
- 8
src/freedombone-restore-remote Vedi File

@@ -39,7 +39,7 @@ export TEXTDOMAINDIR="/usr/share/locale"
39 39
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
40 40
 for f in $UTILS_FILES
41 41
 do
42
-  source $f
42
+    source $f
43 43
 done
44 44
 
45 45
 SERVER_NAME=$1
@@ -96,13 +96,6 @@ fi
96 96
 # MariaDB password
97 97
 DATABASE_PASSWORD=$(cat /root/dbpass)
98 98
 
99
-function restore_directory_from_friend {
100
-    if [ ! -d ${1} ]; then
101
-        mkdir ${1}
102
-    fi
103
-    obnam restore -r $SERVER_DIRECTORY/backup/${2} --to ${1}
104
-}
105
-
106 99
 function copy_gpg_keys {
107 100
     echo $"Copying GPG keys from admin user to root"
108 101
     cp -r /home/$ADMIN_USERNAME/.gnupg /root

+ 25
- 0
src/freedombone-utils-backup Vedi File

@@ -218,6 +218,13 @@ function backup_database_local {
218 218
     fi
219 219
 }
220 220
 
221
+function set_obnam_client_name {
222
+    # obnam can backup multiple machines with different domain names to
223
+    # a repository. To be able to restore directories from different
224
+    # machines we need to enforce a single client name for all backups
225
+    echo "client-name = ${PROJECT_NAME}" > /etc/obnam.conf
226
+}
227
+
221 228
 function backup_directory_to_usb {
222 229
     if [ ! -d ${1} ]; then
223 230
         echo $"WARNING: directory does not exist: ${1}"
@@ -233,6 +240,7 @@ function backup_directory_to_usb {
233 240
         if [ ! -d $USB_MOUNT/backup/${2} ]; then
234 241
             mkdir -p $USB_MOUNT/backup/${2}
235 242
         fi
243
+        set_obnam_client_name
236 244
         obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
237 245
         obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
238 246
         if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
@@ -268,6 +276,22 @@ function backup_directory_to_usb {
268 276
     fi
269 277
 }
270 278
 
279
+function restore_directory_from_usb {
280
+    if [ ! -d ${1} ]; then
281
+        mkdir ${1}
282
+    fi
283
+    set_obnam_client_name
284
+    obnam restore -r $USB_MOUNT/backup/${2} --to ${1}
285
+}
286
+
287
+function restore_directory_from_friend {
288
+    if [ ! -d ${1} ]; then
289
+        mkdir ${1}
290
+    fi
291
+    set_obnam_client_name
292
+    obnam restore -r $SERVER_DIRECTORY/backup/${2} --to ${1}
293
+}
294
+
271 295
 function backup_database_to_usb {
272 296
     database_name=$1
273 297
     backup_database_local $database_name
@@ -297,6 +321,7 @@ function backup_directory_to_friend {
297 321
     if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then
298 322
         mkdir -p $SERVER_DIRECTORY/backup/${2}
299 323
     fi
324
+    set_obnam_client_name
300 325
     obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
301 326
     obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
302 327
     if [[ $ENABLE_VERIFICATION == "yes" ]]; then