Browse Source

Backup and restore any user config files

Bob Mottram 9 years ago
parent
commit
3421108c6c
1 changed files with 82 additions and 0 deletions
  1. 82
    0
      src/freedombone

+ 82
- 0
src/freedombone View File

@@ -2823,6 +2823,21 @@ function create_backup_script {
2823 2823
   echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
2824 2824
   echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2825 2825
 
2826
+  echo '# Backup user configs' >> /usr/bin/$BACKUP_SCRIPT_NAME
2827
+  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_SCRIPT_NAME
2828
+  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_SCRIPT_NAME
2829
+  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2830
+  echo '    if [ -d /home/$USERNAME/.config ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2831
+  echo '      echo "Backing up config files for $USERNAME"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2832
+  echo '      if [ ! -d $USB_MOUNT/backup/config/$USERNAME ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2833
+  echo '        mkdir -p $USB_MOUNT/backup/config/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
2834
+  echo '      fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2835
+  echo '      backup_directory_to_usb /home/$USERNAME/.config config/$USERNAME' >> /usr/bin/$BACKUP_SCRIPT_NAME
2836
+  echo '    fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2837
+  echo '  fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2838
+  echo 'done' >> /usr/bin/$BACKUP_SCRIPT_NAME
2839
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2840
+
2826 2841
   echo '# Backup web sites' >> /usr/bin/$BACKUP_SCRIPT_NAME
2827 2842
   echo "if [ -d /etc/nginx ]; then" >> /usr/bin/$BACKUP_SCRIPT_NAME
2828 2843
   echo '  echo "Backing up web settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
@@ -3467,6 +3482,33 @@ function create_restore_script {
3467 3482
   echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
3468 3483
   echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
3469 3484
 
3485
+  RESTORE_SUBDIR='home/'
3486
+  if [[ $BACKUP_TYPE != 'obnam' ]]; then
3487
+      RESTORE_SUBDIR='usb/backup/config/'
3488
+  fi
3489
+  echo 'if [ -d $USB_MOUNT/backup/config ]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
3490
+  echo '  for d in $USB_MOUNT/backup/config/*/ ; do' >> /usr/bin/$RESTORE_SCRIPT_NAME
3491
+  echo '    USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $6}'"'"')' >> /usr/bin/$RESTORE_SCRIPT_NAME
3492
+  echo '    if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
3493
+  echo '      if [ ! -d /home/$USERNAME ]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
3494
+  echo '          freedombone-adduser $USERNAME' >> /usr/bin/$RESTORE_SCRIPT_NAME
3495
+  echo '      fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
3496
+  echo '      echo "Restoring config files for $USERNAME"' >> /usr/bin/$RESTORE_SCRIPT_NAME
3497
+  echo '      restore_directory_from_usb /root/tempconfig config/$USERNAME' >> /usr/bin/$RESTORE_SCRIPT_NAME
3498
+  echo -n "      cp -r /root/tempconfig/${RESTORE_SUBDIR}" >> /usr/bin/$RESTORE_SCRIPT_NAME
3499
+  echo '$USERNAME/.config /home/$USERNAME/' >> /usr/bin/$RESTORE_SCRIPT_NAME
3500
+  echo '      if [ ! "$?" = "0" ]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
3501
+  echo '        umount $USB_MOUNT' >> /usr/bin/$RESTORE_SCRIPT_NAME
3502
+  echo '        rm -rf $USB_MOUNT' >> /usr/bin/$RESTORE_SCRIPT_NAME
3503
+  echo '        rm -rf /root/tempconfig' >> /usr/bin/$RESTORE_SCRIPT_NAME
3504
+  echo '        exit 664' >> /usr/bin/$RESTORE_SCRIPT_NAME
3505
+  echo '      fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
3506
+  echo '      rm -rf /root/tempconfig' >> /usr/bin/$RESTORE_SCRIPT_NAME
3507
+  echo '    fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
3508
+  echo '  done' >> /usr/bin/$RESTORE_SCRIPT_NAME
3509
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
3510
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
3511
+
3470 3512
   RESTORE_SUBDIR='etc/'
3471 3513
   if [[ $BACKUP_TYPE != 'obnam' ]]; then
3472 3514
       RESTORE_SUBDIR='usb/backup/ssl/'
@@ -4501,6 +4543,21 @@ function backup_to_friends_servers {
4501 4543
   echo 'done' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4502 4544
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4503 4545
 
4546
+  echo '# Backup config files' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4547
+  echo 'for d in /home/*/ ; do' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4548
+  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4549
+  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4550
+  echo '    if [ -d /home/$USERNAME/.config ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4551
+  echo '      echo "Backing up config files for $USERNAME"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4552
+  echo '      if [ ! -d $SERVER_DIRECTORY/backup/config/$USERNAME ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4553
+  echo '        mkdir -p $SERVER_DIRECTORY/backup/config/$USERNAME' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4554
+  echo '      fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4555
+  echo '      backup_directory_to_friend /home/$USERNAME/.config config/$USERNAME' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4556
+  echo '    fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4557
+  echo '  fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4558
+  echo 'done' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4559
+  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4560
+
4504 4561
   echo '# Backup web sites' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4505 4562
   echo "if [ -d /etc/nginx ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4506 4563
   echo '  echo "Backing up web settings"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
@@ -5197,6 +5254,31 @@ function restore_from_friend {
5197 5254
   echo 'done' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5198 5255
   echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5199 5256
 
5257
+  RESTORE_SUBDIR='home'
5258
+  if [[ $BACKUP_TYPE != 'obnam' ]]; then
5259
+      RESTORE_SUBDIR='remoterestore/backup/config'
5260
+  fi
5261
+  echo 'for d in $SERVER_DIRECTORY/backup/config/*/ ; do' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5262
+  echo '  USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $6}'"'"')' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5263
+  echo '  if [[ $USERNAME != "git" ]]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5264
+  echo '    if [ -d $SERVER_DIRECTORY/backup/config/$USERNAME ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5265
+  echo '      if [ ! -d /home/$USERNAME ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5266
+  echo '          freedombone-adduser $USERNAME' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5267
+  echo '      fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5268
+  echo '      echo "Restoring config files for $USERNAME"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5269
+  echo '      restore_directory_from_friend /root/tempconfig config/$USERNAME' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5270
+  echo -n "      cp -r /root/tempconfig/${RESTORE_SUBDIR}/" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5271
+  echo '$USERNAME/.config /home/$USERNAME/' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5272
+  echo '      if [ ! "$?" = "0" ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5273
+  echo '        rm -rf /root/tempconfig' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5274
+  echo '        exit 664' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5275
+  echo '      fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5276
+  echo '      rm -rf /root/tempconfig' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5277
+  echo '    fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5278
+  echo '  fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5279
+  echo 'done' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5280
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
5281
+
5200 5282
   RESTORE_SUBDIR='etc'
5201 5283
   if [[ $BACKUP_TYPE != 'obnam' ]]; then
5202 5284
       RESTORE_SUBDIR='remoterestore/backup/ssl'