Как сделать резервную копию MySql всех баз данных

Хочу поделится с вами небольшим скриптом для создания резервных копий всех баз данных MySql.

#!/bin/bash

MyUSER="dbuser"
MyPASS="dbpass"
MyHOST="localhost"

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

#MYSQL="/usr/local/bin/mysql"
#MYSQLDUMP="/usr/local/bin/mysqldump"

CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"

DEST="./db_backup"

MBD="$DEST"
HOST="$(hostname)"
NOW="$(date +"%Y%m%d")"

FILE=""
DBS=""

# DO NOT BACKUP these databases, delemiter SPACE
IGN="information_schema"

# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"

for db in $DBS
do

    skipdb=-1
    if [ "$IGN" != "" ]; then
        for i in $IGN
        do
            [ "$db" == "$i" ] && skipdb=1 || :
        done
    fi

    if [ "$skipdb" == "-1" ] ; then
        MBD="$DEST/$db"    	
        [ ! -d $MBD ] && mkdir -p $MBD || :
        FILE="$MBD/$NOW.sql.gz"
            $MYSQLDUMP --opt -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
        FNUM="$(find $MBD/* | wc -l)"
        if [ $FNUM -ge 0 ] ; then
            find $MBD/* -type f -mtime 20 -exec rm -rf {} \;
        fi
    fi

done

Самый простой backup-скрипт на bash Linux

В этой заметке я покажу пример самого простого бэкап-скрипта на bash Linux.

#!/bin/bash
# This is my backup file - created by 

# here I am setting a time stamp variable which I like to use for logging
TIMESTAMP=`date +%Y%m%d.%H%M`

# here I am setting up the backup directory as a variable
DEST_DIR="/backup/my-backup"

# here I am setting up the directory in which I want to backup, again another variable
SRC_DIR="/home//Documents"

# let's create a variable for the backup file name file
FNAME="MyBackup"

# let's create a variable for the log file, let's also name the log file with the filename and timestamp it
LOG="/home//log/$FNAME-$TIMESTAMP.log"

# start the backup, create a log file which will record any messages run by this script
echo -e "Starting backup of  $SRC_DIR directory" >> ${LOG}

# compress the directory and files, direct the tar.gz file to your destination directory
tar -vczf ${DEST_DIR}/${FNAME}-${TIMESTAMP}.tar.gz ${SRC_DIR} >> ${LOG}

# end the backup, append to log file created by this script
echo -e "Ending backup of  $SRC_DIR" >> ${LOG}

Сохраняем его в удобном для вас каталоге и задаем выполнение по расписанию. Для этого открываем файл /etc/crontab и в конец добавляем строку:

00 00   * * *   root    sh /home/backup/backup1c.sh

Простой скрипт для создания резервных копий для Windows

Собственно сам скрипт ниже. Для его работы должны быть установлены архиватор 7-zip и утилита forfiles. Скрипт представляет из себя bat(cmd) файл, который архивирует указанный каталог, и скидывает его в сетевое хранилище. Время хранения копии в данном примере 10 дней.

net use Y: /delete /y
net use Y: \\192.168.0.250\backups\1c backup1c /USER:backup1c
IF EXIST Y:\backup (GOTO CREATE_BACKUP) ELSE (GOTO ERROR)
:CREATE_BACKUP
set Backup=Y:
Y:
%Backup%
for /d %%z in (*) do f:\forfiles.exe /p %%z /d -10 /m *.7z /c "cmd /c del /f /a @file"
"f:\Program Files\7-Zip\7z.exe" a -t7z Y:\backup\8\%DATE%.7z  E:\Buhgalteria\1C\1c8
F:
NET USE Y: /delete /y
:ERROR
exit

Собственно сам скрипт ниже. Для его работы должны быть установлены архиватор 7-zip и утилита forfiles. Скрипт представляет из себя bat(cmd) файл, который архивирует указанный каталог, и скидывает его в сетевое хранилище. Время хранения копии в данном примере 10 дней.

net use Y: /delete /y
net use Y: \\192.168.0.250\backups\1c backup1c /USER:backup1c
IF EXIST Y:\backup (GOTO CREATE_BACKUP) ELSE (GOTO ERROR)
:CREATE_BACKUP
set Backup=Y:
Y:
%Backup%
for /d %%z in (*) do f:\forfiles.exe /p %%z /d -10 /m *.7z /c "cmd /c del /f /a @file"
"f:\Program Files\7-Zip\7z.exe" a -t7z Y:\backup\8\%DATE%.7z  E:\Buhgalteria\1C\1c8
F:
NET USE Y: /delete /y
:ERROR
exit