back_db.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/bin/bash
  2. #
  3. # license: GPL V2.0
  4. # version: 1.3.0
  5. # script author: Koshuba V - stvixfree@gmail.com
  6. #
  7. ## only pgsql & mysql
  8. ## the array database name
  9. DBDATA=( "base1" "base2" );
  10. ## the array backup paths
  11. BACKPATH=( "/backup/db" "/backup/db" );
  12. ## the array login for databases
  13. LOGINDB=( "dblogin1" "dblogin2" );
  14. ## the array pass for databases
  15. PASSWDB=( "mypassdb1" "mypassdb2" );
  16. ## the array type databases
  17. TYPEDB=( "pgsql" "mysql" )
  18. ## log file
  19. LOG_FILE="/var/log/syslog.log";
  20. ## messages
  21. MESS_OK="Резервное копирвание базы $DBNAME выполнено"; # Backup database $ DBNAME done
  22. MESS_FAIL="Ошибка резервного копирования базы $DBNAME"; # Backup database $ DBNAME error
  23. ## intermediate values
  24. dbname="none";
  25. #########################################################
  26. function backDB() {
  27. for ((dbinx=0; dbinx != ${#DBDATA[@]}; dbinx++))
  28. do
  29. rdate=$(date +%d%m%y);
  30. dbname=${DBDATA[$dbinx]};
  31. rpath=${BACKPATH[$dbinx]};
  32. dbtype=${TYPEDB[$dbinx]};
  33. dblogin=${LOGINDB[$dbinx]}
  34. dbpass=${PASSWDB[$dbinx]}
  35. if [ "$dbtype" = "pgsql" ];
  36. then
  37. sudo -u postgres pg_dump -C $dbname > $rpath/$dbname"_"$rdate.sql
  38. tar -cJf $rpath/$dbname"_"$rdate.tar.xz $rpath/$dbname"_"$rdate.sql;
  39. rm $rpath/$dbname"_"$rdate.sql;
  40. echo "$(date) -- backup pgbase $MESS_OK">>$LOG_FILE
  41. fi
  42. if [ "$dbtype" = "mysql" ];
  43. then
  44. mysqldump -u $dblogin -p$dbpass $dbname| gzip > $rpath/$dbname"_"$rdate.sql.gz
  45. echo "$(date) -- backup mysqlbase $MESS_OK">>$LOG_FILE
  46. fi
  47. done
  48. }
  49. if [ ! -d $BACKPATH ];
  50. then
  51. mkdir -p $BACKPATH;
  52. fi
  53. backDB;
  54. exit 0