Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.00 KB | None | 0 0
  1. #!/bin/sh
  2. set -e
  3. ## Constant Variables
  4. bkpdir=/var/auto_backup # be sure this folder exists
  5. servername=
  6. mysqlpwd=
  7. mysql_user=root
  8. archive_password= # Password of the backup archive
  9. ## IRC Reporting script settings
  10. ## You can use the same server that the gazelle code (in config.php) uses
  11. ## Comment out the echo "PRIVMSG.." lines if you don't use this
  12. ircreport_server=
  13. ircreport_port=
  14.  
  15. ## Check if the backup dir exists
  16. if [ ! -d "$bkpdir" ]
  17. then
  18.     echo "Specified backup directory '$bkpdir' does NOT exist!"
  19.     exit 0
  20. fi
  21.  
  22. echo "Backing up selected items on $servername"
  23. ## Send IRC Messages
  24. echo "PRIVMSG #admin :/002Backup:/002 Backup script starting..." | netcat -q0 $ircreport_server $ircreport_port
  25. echo "PRIVMSG #staff :Backup script starting..." | netcat -q0 $ircreport_server $ircreport_port
  26. echo "PRIVMSG #staff :This may take a few minutes. During that time, the script will compress the backup and upload it to the backup server." | netcat -q0 $ircreport_server $ircreport_port
  27. echo "PRIVMSG #staff :Please be patient, I will tell you when it completes." | netcat -q0 $ircreport_server $ircreport_port
  28.  
  29. ##
  30. ## Make the file names
  31. ##
  32. # New file
  33. curdate=`date +%m-%d-%Y`
  34. outdir=$servername"_"$curdate
  35. # Last backup's file
  36. yesterday=`date -d "yesterday" +"%m-%d-%Y"`
  37. olddir=$servername"_"$yesterday
  38.  
  39. ##
  40. ## Start backing up files/directories
  41. ##
  42. echo "Copying files and folders..."
  43. echo "PRIVMSG #admin :/002Backup:/002 Copying files and folders" | netcat -q0 $ircreport_server $ircreport_port
  44. cd $bkpdir
  45. sudo rm -fr $servername*
  46. sudo mkdir $outdir
  47. cd $outdir
  48.  
  49. ## These are the temporary sub directories in the backup folder
  50. ## Edit this to match your backup copying commands below
  51. sudo mkdir etc
  52. sudo mkdir usr
  53. ## These are the dirs to backup
  54. ## Edit this to match your server
  55. sudo cp -r /etc/update-motd.d/ etc/update-motd.d/
  56. sudo cp -r /etc/group etc/group
  57. sudo cp -r /etc/fstab etc/fstab
  58. sudo cp -r /etc/motd.tail etc/motd.tail
  59. sudo cp -r /etc/proftpd/ etc/proftpd/
  60. sudo cp -r /etc/apache2/ etc/apache2/
  61. sudo cp -r /usr/local/etc/sphinx.conf usr/sphinx.conf
  62. sudo cp -r /etc/memcached.conf etc/memcached.conf
  63. sudo cp -r /etc/init.d etc/init.d/
  64. sudo cp -r /var/www www/
  65. sudo cp -r /usr/local/Unreal3.2 usr/Unreal3.2/
  66. sudo cp -r /usr/local/services usr/services/
  67. sudo cp -r /usr/local/xbtt usr/xbtt/
  68. echo "Copying files and folders: DONE"
  69.  
  70. ##
  71. ## Backup MySQL databases
  72. ##
  73. echo "Backing up MySQL..."
  74. echo "PRIVMSG #admin :/002Backup:/002 Backing up MySQL" | netcat -q0 $ircreport_server $ircreport_port
  75. sudo mysqldump -u $mysql_user -p$mysqlpwd --all-databases > all-databases.sql
  76. echo "Backing up MySQL: DONE"
  77.  
  78. ##
  79. ## Compress backup with 7zip
  80. ##
  81. cd $bkpdir
  82. echo "Compressing backup..."
  83. echo "PRIVMSG #admin :/002Backup:/002 Compressing backup" | netcat -q0 $ircreport_server $ircreport_port
  84. 7z a -t7z $outdir.7z $outdir -mx9 -mmt=2 -p80486Dx4_
  85. sudo rm -fr $outdir
  86. echo "Compressing backup: DONE"
  87.  
  88. ##
  89. ## Upload the backup to the backup server(s)
  90. ##
  91. FILE=$outdir.7z
  92. OLDFILE=$olddir.7z
  93.  
  94. backupToServer1()
  95. {
  96.     echo "PRIVMSG #admin :/002Backup:/002 Uploading to Server 1" | netcat -q0 $ircreport_server $ircreport_port
  97.         echo "Transferring backup to Server 1 for safe keeping."
  98.         /root/sendtoserver1.sh $FILE
  99.         echo "Transferring backup to Server 1 for safe keeping: DONE"
  100. }
  101.  
  102. backupToServer2()
  103. {
  104.     echo "PRIVMSG #admin :/002Backup:/002 Uploading to Server 2" | netcat -q0 $ircreport_server $ircreport_port
  105.         echo "Transferring backup to Server 2 Slice for safe keeping."
  106.     /root/sendtoserver2.sh $FILE $OLDFILE
  107.         echo "Transferring backup to Server 2 Slice for safe keeping: DONE"
  108. }
  109.  
  110. # Check arguments
  111. case "$1" in
  112. --noftp)
  113.     echo "\n--noftp switch used, not backing up backup server(s)\n"
  114. ;;
  115. -f)
  116.     echo "Uploading backup to backup server(s)..." 
  117.         echo "PRIVMSG #admin :/002Backup:/002 Begining upload to backup server(s)..." | netcat -q0 $ircreport_server $ircreport_port
  118.         case "$2" in
  119.         server1)
  120.                 backupToServer1
  121.         ;;
  122.         server2)
  123.                 backupToServer2
  124.         ;;
  125.         all)
  126.                 backupToServer1
  127.                 backupToServer2
  128.         ;;
  129.         *)
  130.                 echo "/nINCORRECT ARGUMENT VALUE!"
  131.                 echo "You must specify what server(s) to backup to!\n"
  132.         ;;
  133.         esac
  134.     echo "Uploading backup to backup server(s): DONE"
  135. ;;
  136. *)
  137.     echo "\nArgument '$1' not found! Continuing with defaults...\n"
  138.         echo "PRIVMSG #admin :/002Backup:/002 Begining upload to backup server(s)..." | netcat -q0 $ircreport_server $ircreport_port
  139.     backupToServer1
  140.         backupToServer2
  141.     echo "Uploading backup to backup server(s): DONE"
  142. ;;
  143. esac
  144.  
  145. ##
  146. ## Finished backup
  147. ##
  148. echo "Backing script: DONE!"
  149. ## Send finished IRC messages
  150. echo "PRIVMSG #admin :/002Backup:/002 Backup script FINISHED!" | netcat -q0 $ircreport_server $ircreport_port
  151. echo "PRIVMSG #staff :The backup is complete, thank you for your patience." | netcat -q0 $ircreport_server $ircreport_port
  152. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement