Резервное копирование · 1 min read · Jan 30, 2026

Скрипт оболочки для резервного копирования всех баз данных MySQL, каждая таблица в отдельном файле и загрузка на удаленный FTP

Скрипт оболочки для резервного копирования всех баз данных MySQL, каждая таблица в отдельном файле и загрузка на удаленный FTP

Этот скрипт создаст резервную копию каждой таблицы в каждой базе данных (один файл на таблицу), сожмет его и загрузит на удаленный ftp.

Сначала создайте пользователя mysql с правами на выбор и блокировку таблиц (или используйте root).

Затем используйте этот скрипт в вашем crontab каждый час:

#!/bin/sh
# Системный + MySQL скрипт резервного копирования
# Авторские права (c) 2008 Marchost
# Этот скрипт лицензирован под GNU GPL версии 2.0 или выше
# ---------------------------------------------------------------------

#########################
######ДОЛЖЕН БЫТЬ ИЗМЕНЕН#####

### Настройка системы ###
BACKUP=ВАШ_ЛОКАЛЬНЫЙ_ДИРЕКТОРИЯ_РЕЗЕРВНОГО_КОПИРОВАНИЯ

### Настройка MySQL ###
MUSER="MYSQL_USER"
MPASS="MYSQL_USER_PASSWORD"
MHOST="localhost"

### Настройка FTP сервера ###
FTPD="ВАШ_FTP_ДИРЕКТОРИЯ_РЕЗЕРВНОГО_КОПИРОВАНИЯ"
FTPU="ВАШ_FTP_ПОЛЬЗОВАТЕЛЬ"
FTPP="ВАШ_FTP_ПАРОЛЬ"
FTPS="ВАШ_FTP_СЕРВЕР_АДРЕС"

######НЕ ИЗМЕНЯЙТЕ НИЖЕ######
#########################################

### Бинарные файлы ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

### Сегодня + час в 24-часовом формате ###
NOW=$(date +"%d%H")

### Создать почасовой каталог ###

mkdir $BACKUP/$NOW

### Получить все имена баз данных ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do

### Создать каталог для каждой базы данных, резервное копирование таблиц в отдельные файлы ###
  mkdir $BACKUP/$NOW/$db

  for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_`;
do
    FILE=$BACKUP/$NOW/$db/$i.sql.gz
    echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
  done
done

### Сжать все таблицы в один красивый файл для загрузки ###

ARCHIVE=$BACKUP/$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW

$TAR -cvf $ARCHIVE $ARCHIVED

### Сброс резервной копии с использованием FTP ###
cd $BACKUP
DUMPFILE=$NOW.tar.gz
$FTP -n $FTPS <
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.