Делаем бекап всех MySQL-баз, каждую кладём в отдельный файл

image_pdfimage_print

Меня очень задрало, если в случае необходимости приходится выковыривать из слитного бекапа всех баз данных какую-то конкретную базу.

Сегодня гнев победил лень, и я нашёл на http://www.snowfrog.net/2005/11/16/backup-multiple-databases-into-separate-files/, а потом и немного модифицировал скрипт для бекапа всех баз данных в отдельные файлы.

При этом, файлы называются именами баз, и всё складывается в папку, названную датой бекапа.

Отлично работает в Ubuntu

#!/bin/bash
 # sonia 16-nov-05, upd. by apache 12-aug-12
 # backup each mysql db into a different file, rather than one big file
 # as with --all-databases - will make restores easier
USER=username #указываем имя пользователя СУБД с полными правами
 PASSWORD=***  #указываем его пароль
 OUTPUTDIR=/media/backup/ # путь для бекапа, не забываем проверить права на эту папку - она должна быть доступна на запись (хотя бы 750)
 MYSQLDUMP=/usr/bin/mysqldump
 MYSQL=/usr/bin/mysql
# clean up any old backups - save space
 rm $OUTPUTDIR/*bak > /dev/null 2>&1
 mkdir $OUTPUTDIR/`date +%Y-%m-%d`/
 # get a list of databases
 databases=`$MYSQL --user=$USER --password=$PASSWORD
 -e SHOW DATABASES; | tr -d | | grep -v Database`
# dump each database in turn
 for db in $databases; do
 echo $db
 $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD
 --databases $db | bzip2 > $OUTPUTDIR/`date +%Y-%m-%d`/$db.bz2
 done

 

Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Leave a Reply

*

 

Next ArticleУстанавливаем свою картинку сайта при репосте в социальных сетях