浏览代码

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 年前
父节点
当前提交
a50c9c6f63
共有 3 个文件被更改,包括 35 次插入22 次删除
  1. 9
    14
      src/freedombone-restore-local
  2. 1
    8
      src/freedombone-restore-remote
  3. 25
    0
      src/freedombone-utils-backup

+ 9
- 14
src/freedombone-restore-local 查看文件

50
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
50
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
51
 for f in $UTILS_FILES
51
 for f in $UTILS_FILES
52
 do
52
 do
53
-  source $f
53
+    source $f
54
 done
54
 done
55
 
55
 
56
 USB_DRIVE=/dev/sdb1
56
 USB_DRIVE=/dev/sdb1
92
     cp -r /home/$ADMIN_USERNAME/.gnupg /root
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
 function restore_config {
95
 function restore_config {
103
     if [[ $RESTORE_APP != 'all' ]]; then
96
     if [[ $RESTORE_APP != 'all' ]]; then
104
         if [[ $RESTORE_APP != 'config' ]]; then
97
         if [[ $RESTORE_APP != 'config' ]]; then
320
                 echo $"Restoring procmail settings for $USERNAME"
313
                 echo $"Restoring procmail settings for $USERNAME"
321
                 temp_restore_dir=/root/tempprocmail
314
                 temp_restore_dir=/root/tempprocmail
322
                 restore_directory_from_usb $temp_restore_dir procmail/$USERNAME
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
                     rm -rf $temp_restore_dir
324
                     rm -rf $temp_restore_dir
326
-                    set_user_permissions
327
-                    backup_unmount_drive
328
-                    exit 276
329
                 fi
325
                 fi
330
-                rm -rf $temp_restore_dir
331
             fi
326
             fi
332
         done
327
         done
333
     fi
328
     fi

+ 1
- 8
src/freedombone-restore-remote 查看文件

39
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
39
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
40
 for f in $UTILS_FILES
40
 for f in $UTILS_FILES
41
 do
41
 do
42
-  source $f
42
+    source $f
43
 done
43
 done
44
 
44
 
45
 SERVER_NAME=$1
45
 SERVER_NAME=$1
96
 # MariaDB password
96
 # MariaDB password
97
 DATABASE_PASSWORD=$(cat /root/dbpass)
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
 function copy_gpg_keys {
99
 function copy_gpg_keys {
107
     echo $"Copying GPG keys from admin user to root"
100
     echo $"Copying GPG keys from admin user to root"
108
     cp -r /home/$ADMIN_USERNAME/.gnupg /root
101
     cp -r /home/$ADMIN_USERNAME/.gnupg /root

+ 25
- 0
src/freedombone-utils-backup 查看文件

218
     fi
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
 function backup_directory_to_usb {
228
 function backup_directory_to_usb {
222
     if [ ! -d ${1} ]; then
229
     if [ ! -d ${1} ]; then
223
         echo $"WARNING: directory does not exist: ${1}"
230
         echo $"WARNING: directory does not exist: ${1}"
233
         if [ ! -d $USB_MOUNT/backup/${2} ]; then
240
         if [ ! -d $USB_MOUNT/backup/${2} ]; then
234
             mkdir -p $USB_MOUNT/backup/${2}
241
             mkdir -p $USB_MOUNT/backup/${2}
235
         fi
242
         fi
243
+        set_obnam_client_name
236
         obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
244
         obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
237
         obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
245
         obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1}
238
         if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
246
         if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then
268
     fi
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
 function backup_database_to_usb {
295
 function backup_database_to_usb {
272
     database_name=$1
296
     database_name=$1
273
     backup_database_local $database_name
297
     backup_database_local $database_name
297
     if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then
321
     if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then
298
         mkdir -p $SERVER_DIRECTORY/backup/${2}
322
         mkdir -p $SERVER_DIRECTORY/backup/${2}
299
     fi
323
     fi
324
+    set_obnam_client_name
300
     obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
325
     obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
301
     obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
326
     obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1}
302
     if [[ $ENABLE_VERIFICATION == "yes" ]]; then
327
     if [[ $ENABLE_VERIFICATION == "yes" ]]; then