Guest User

Untitled

a guest
Dec 9th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ## Short introduction ##
  4. # It is supposed that you have MySQL and lot of files to backup. Done via mk-parallel-dump (maatkit).
  5. # Files (as well as DB dumps) are keept versioned, so you can revert to any state during last 20 days. Done via rdiff-backup.
  6. # Afterwards, files (with versioning metainfo) are transfered to FTP server. Done via duplicity.
  7.  
  8. # Required software:
  9. # 1. maatkit (mk-parallel-dump)
  10. # 2. rdiff-backup
  11.  
  12.  
  13. BACKUPDIR="/backups"
  14. SYSBACKUPDIR="${BACKUPDIR}/files"
  15.  
  16. MYSQLUSER="root"
  17. MYSQLPASS="pass"
  18. MYSQL_OUTDIR="${BACKUPDIR}/mysql"
  19.  
  20. PATH=PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  21.  
  22. ############ Action definitions ##############
  23.  
  24. backup_dpkg() {
  25. dpkg --get-selections > $BACKUPDIR/dpkg-selections.txt
  26. }
  27.  
  28. backup_mysql() {
  29. rm -rf $MYSQL_OUTDIR
  30. if [ ! -d $MYSQL_OUTDIR ]; then
  31. mkdir -p $MYSQL_OUTDIR
  32. fi
  33.  
  34. #mk-parallel-dump --password ${MYSQLPASS} --user ${MYSQLUSER} --base-dir ${MYSQL_OUTDIR} --nogzip
  35. DBS="$(/usr/bin/mysql -u $MYSQLUSER -p$MYSQLPASS -Bse 'show databases')"
  36. for db in $DBS
  37. do
  38. ### Create dir for each databases, backup tables in individual files ###
  39. mkdir $MYSQL_OUTDIR/$db
  40. for i in `/usr/bin/mysql -u $MYSQLUSER -p$MYSQLPASS $db -Bse 'show tables'`
  41. do
  42. FILE=$MYSQL_OUTDIR/$db/$i.sql
  43. /usr/bin/mysqldump --add-drop-table --allow-keywords -q -c -u $MYSQLUSER -p$MYSQLPASS $db $i > $FILE
  44. done
  45. done
  46. find ${MYSQL_OUTDIR} -type f -name '*.sql' -exec gzip --best -f '{}' \;
  47. }
  48.  
  49. backup_files() {
  50. #cleanup
  51. rdiff-backup --force --remove-older-than 20D $SYSBACKUPDIR 2>/dev/null
  52.  
  53. #do backup
  54. rdiff-backup \
  55. --exclude $SYSBACKUPDIR \
  56. --exclude '/home/*/dl' \
  57. --exclude '/home/*/tmp' \
  58. --exclude '**.log' \
  59. --exclude '**.log.1' \
  60. --exclude '**.log.*.gz' \
  61. --exclude /var/www/web_daemons/www/noc.daemons.org.ua/public_html/munin \
  62. --include /var/spool/cron/crontabs \
  63. --include /var/backups \
  64. --include /etc \
  65. --include /root \
  66. --include /var/www \
  67. --exclude /var/www/*/chroot \
  68. --include /var/lib/awstats \
  69. --include /home \
  70. --include /usr/local \
  71. --include /var/lib/dpkg/status \
  72. --include /var/lib/dpkg/status-old \
  73. --include ${MYSQL_OUTDIR} \
  74. --exclude '/*' \
  75. / $SYSBACKUPDIR
  76. }
  77.  
  78. ########## Action sequence ########
  79. backup_dpkg
  80. backup_mysql
  81. backup_files
Add Comment
Please, Sign In to add comment