Przeglądaj źródła

Remote backups of gogs

Bob Mottram 10 lat temu
rodzic
commit
aceae466a1
1 zmienionych plików z 84 dodań i 0 usunięć
  1. 84
    0
      src/freedombone

+ 84
- 0
src/freedombone Wyświetl plik

@@ -2792,6 +2792,7 @@ function backup_to_friends_servers {
2792 2792
   get_mariadb_gnusocial_admin_password
2793 2793
   get_mariadb_redmatrix_admin_password
2794 2794
   get_mariadb_owncloud_admin_password
2795
+  get_mariadb_git_admin_password
2795 2796
 
2796 2797
   if ! grep -q "backups on friends servers" /home/$MY_USERNAME/README; then
2797 2798
       echo '' >> /home/$MY_USERNAME/README
@@ -2996,6 +2997,53 @@ function backup_to_friends_servers {
2996 2997
       echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
2997 2998
       echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
2998 2999
   fi
3000
+
3001
+  if grep -Fxq "install_gogs" $COMPLETION_FILE; then
3002
+      BACKUP_INCLUDES_DATABASES="yes"
3003
+      echo 'if [ ! -d $SERVER_DIRECTORY/backup/gogs ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3004
+      echo '  mkdir -p $SERVER_DIRECTORY/backup/gogs' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3005
+      echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3006
+      echo 'if [ ! -d $SERVER_DIRECTORY/backup/gogsdata ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3007
+      echo '  mkdir -p $SERVER_DIRECTORY/backup/gogsdata' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3008
+      echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3009
+      echo "if [ ! -d /root/tempgogsdata ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3010
+      echo "  mkdir -p /root/tempgogsdata" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3011
+      echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3012
+      echo 'mysqldump --password=$DATABASE_PASSWORD gogs > /root/tempgogsdata/gogs.sql' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3013
+      echo "if [ ! -s /root/tempgogsdata/gogs.sql ]; then" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3014
+      echo '  echo "Gogs database could not be saved"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3015
+      echo '  if [ ! $DATABASE_PASSWORD ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3016
+      echo "    echo 'No MariaDB password was given'" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3017
+      echo "  fi" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3018
+      echo '  # Send a warning email' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3019
+      echo -n '  echo "Unable to export gogs database" | mail -s "Freedombone backup to friends" ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3020
+      echo "$MY_EMAIL_ADDRESS" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3021
+      echo '  exit 6785' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3022
+      echo "fi" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3023
+      echo -n 'rsyncrypto -v -r /root/tempgogsdata $SERVER_DIRECTORY/backup/gogsdata $SERVER_DIRECTORY/backup/gogsdata.keys ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3024
+      echo "$BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3025
+      echo 'if [ ! "$?" = "0" ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3026
+      echo '  shred -zu /root/tempgogsdata/*' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3027
+      echo '  rm -rf /root/tempgogsdata' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3028
+      echo '  # Send a warning email' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3029
+      echo -n '  echo "Unable to encrypt gogs database" | mail -s "Freedombone backup to friends" ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3030
+      echo "$MY_EMAIL_ADDRESS" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3031
+      echo '  exit 3776' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3032
+      echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3033
+      echo 'shred -zu /root/tempgogsdata/*' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3034
+      echo 'rm -rf /root/tempgogsdata' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3035
+      echo 'echo "Obtaining Gogs data backup"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3036
+      echo -n 'rsyncrypto -v -r /etc/gocode/src/github.com/gogits/gogs $SERVER_DIRECTORY/backup/gogs $SERVER_DIRECTORY/backup/gogs.keys ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3037
+      echo "$BACKUP_CERTIFICATE" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3038
+      echo 'if [ ! "$?" = "0" ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3039
+      echo '  # Send a warning email' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3040
+      echo -n '  echo "Unable to encrypt gogs installation (/etc/gocode/src/github.com/gogits/gogs)" | mail -s "Freedombone backup to friends" ' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3041
+      echo "$MY_EMAIL_ADDRESS" >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3042
+      echo '  exit 76547' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3043
+      echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3044
+      echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3045
+  fi
3046
+
2999 3047
   if grep -Fxq "install_wiki" $COMPLETION_FILE; then
3000 3048
       echo 'if [ ! -d $SERVER_DIRECTORY/backup/wiki ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
3001 3049
       echo '  mkdir -p $SERVER_DIRECTORY/backup/wiki' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
@@ -3438,6 +3486,7 @@ function restore_from_friend {
3438 3486
   get_mariadb_gnusocial_admin_password
3439 3487
   get_mariadb_redmatrix_admin_password
3440 3488
   get_mariadb_owncloud_admin_password
3489
+  get_mariadb_git_admin_password
3441 3490
 
3442 3491
   if ! grep -q "restore from a friend's server" /home/$MY_USERNAME/README; then
3443 3492
       echo '' >> /home/$MY_USERNAME/README
@@ -3845,6 +3894,41 @@ function restore_from_friend {
3845 3894
       echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3846 3895
   fi
3847 3896
 
3897
+  if grep -Fxq "install_gogs" $COMPLETION_FILE; then
3898
+      BACKUP_INCLUDES_WEBSITES="yes"
3899
+      echo 'if [ -d $SERVER_DIRECTORY/backup/gogs ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3900
+      echo '  echo "Restoring gogs database"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3901
+      echo '  if [ ! -d /root/tempgogsdata ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3902
+      echo '    mkdir /root/tempgogsdata' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3903
+      echo '  fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3904
+      echo -n '  rsyncrypto -v -d -r $SERVER_DIRECTORY/backup/gogsdata /root/tempgogsdata $SERVER_DIRECTORY/backup/gogsdata.keys ' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3905
+      echo "$BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3906
+      echo '  if [ ! -f /root/tempgogsdata/remoterestore/backup/gogsdata/tempgogsdata/gogs.sql ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3907
+      echo '    echo "Unable to restore Gogs database"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3908
+      echo '    rm -rf /root/tempgogsdata' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3909
+      echo '    exit 8548' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3910
+      echo '  fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3911
+      echo '  mysqlsuccess=$(mysql -u root --password=$DATABASE_PASSWORD gogs -o < /root/tempgogsdata/remoterestore/backup/gogsdata/tempgogsdata/gogs.sql)' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3912
+      echo '  if [ ! "$?" = "0" ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3913
+      echo '    echo "$mysqlsuccess"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3914
+      echo '    exit 3695' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3915
+      echo '  fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3916
+      echo '  echo "Restoring Gogs installation"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3917
+      echo '  if [ ! -d /root/tempgogs ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3918
+      echo '    mkdir /root/tempgogs' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3919
+      echo '  fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3920
+      echo -n '  rsyncrypto -v -d -r $SERVER_DIRECTORY/backup/gogs /root/tempgogs $SERVER_DIRECTORY/backup/gogs.keys ' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3921
+      echo "$BACKUP_CERTIFICATE" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3922
+      echo "  cp -r /root/tempgogs/remoterestore/backup/gogs/gocode/src/github.com/gogits/gogs/* /etc/gocode/src/github.com/gogits/gogs/" >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3923
+      echo '  if [ ! "$?" = "0" ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3924
+      echo '    exit 5885' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3925
+      echo '  fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3926
+      echo '  rm -rf /root/tempgogs' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3927
+      echo '  rm -rf /root/tempgogsdata' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3928
+      echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3929
+      echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3930
+  fi
3931
+
3848 3932
   echo 'if [ -d $SERVER_DIRECTORY/backup/wiki ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3849 3933
   echo '  echo "Restoring Wiki installation"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
3850 3934
   echo '  mkdir /root/tempwiki' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME