Задать вопрос
Sk8er
@Sk8er
Жесток, опасен, вспыльчив. Щеголь.

На чём делать бекап с удалённого сервера

Появилась нужда делать бекапы с удалённого сервера (с Ubuntu) на мой локальный сервер (тоже Ubuntu), где хранятся сайты, о чём уже спрашивал на Хабре :)

С файлами проблему решил с помощью rsync. Но вот как быть с mysql?

Гуглил — ничего интересного не нашёл. Понравился SypexDumper, но он только для локальных бекапов, а мне нужно делать с удалённого сервера.
Ещё читал про mysqldump, но он, как я понял, тоже для локального сервера.

Подскажите что стоит использовать. Желательно сразу давать ссылки на мануалы. :)

И да, сразу скажу, что на удалённом сервере я ограничен в правах. Так что устанавливать сторонние пакеты не могу.
  • Вопрос задан
  • 8256 просмотров
Подписаться 8 Оценить Комментировать
Ответ пользователя elliot К ответам на вопрос (11)
@elliot
Я таким скриптом пользуюсь.

На выгоде получаются сжатые данные — по файлу на базу.
А скопировать по ssh или ftp на локальную машину можно.

#!/bin/bash


##########################################################
# Common options
##########################################################

# Linux bin paths, change this if it can not be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
TAR="$(which tar)"
RM="$(which rm)"


HOST="$(hostname)"
BACKUP_DIRECTORY="/var/www/_DUMP"






##########################################################
# MySQL options
##########################################################
MYSQL_USER="root" # Username
MYSQL_HOST="localhost" # Hostname
MYSQLDUMP_OPTIONS="--opt --default_character_set utf8"
MYSQL_BACKUP_DIR="$BACKUP_DIRECTORY/mysql" # Main directory where backup will be stored
MYSQL_SKIP_BACKUP_DATABASE_LIST="test information_schema mysql" # don't backup these databases


# get MYSQL_PASSWORD
read -s -p "Enter root MySQL password: " MYSQL_PASSWORD
echo "" 1>&2





#############################################################
# Backup MySQL databases
############################################################

# create backup dir
[ ! -d $MYSQL_BACKUP_DIR ] && mkdir -p $MYSQL_BACKUP_DIR || :


# Get MySQL database list
MYSQL_DATABASE_LIST="$($MYSQL -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD -Bse 'show databases')"

for db in $MYSQL_DATABASE_LIST
do
skipdb=-1

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

if [ "$skipdb" == "-1" ] ; then
FILE="$MYSQL_BACKUP_DIR/$db.$HOST.sql.gz"

     echo "Dump database: $db"

     # do all job in pipe,
     # connect to mysql using mysqldump for select mysql database
     # and pipe it out to gz file in backup dir
        $MYSQLDUMP $MYSQLDUMP_OPTIONS -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $db | $GZIP -9 > $FILE

        echo "Done."
    fi
done
Ответ написан
Комментировать