Назад | Перейти на главную страницу

Резервное копирование сайтов с базой данных на сервере ubuntu

У меня есть один локальный сервер ubuntu, на котором у нас были все наши сайты разработки. Все они являются сайтами на основе php. Я хотел бы знать, можем ли мы иметь скрипт или что-то еще для ежедневного резервного копирования файлов и базы данных на внешний жесткий диск?

Пожалуйста, дайте мне знать.

Это небольшой сценарий, который я написал для резервного копирования моих конфигураций apache, веб-файлов и БД на Amazon S3. Единственная цель сервера - это веб-сервер, на котором каждый разработчик использует свой собственный домашний адрес. Итак, в / home есть файл со списком пользователей, для которых необходимо создать резервную копию.

#!/bin/bash
#    2012 Bart De Vos
#    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
#    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#    You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


# location of this script
DIRECTORY=$(cd `dirname $0` && pwd)
INSTALLER_FILENAME=`basename $0`

# error handling
function error_exit
{
    echo "Error on line ${1:-'Aborting script.'}" 1>&2
    exit 1
}

function backup
{
    # exit on errors
    set -e

    # getting hostname
    HOSTNAME_FQDN=`hostname --fqdn` || error_exit "${LINENO}: Error determening hostname"

    echo "Determening timestamp"
    timestampbackup=`/bin/date +%Y%m%d%H` || error_exit "${LINENO}: Error determening timestamp"

    echo "Create backupdir"
    /bin/mkdir /backup/${timestampbackup} || error_exit "${LINENO}: Error creating backupdir"

    echo "Dump and save MYSQL for all dbs"
    /usr/bin/mysqldump --all-databases --opt -c -e -Q -uScriptRunner -pMySuperSecretPasswordThaIAlmostForgotToRemoveFromTheScript | /bin/gzip > /backup/${timestampbackup}/sqlbackup.sql.gz || error_exit "${LINENO}: Error backing up mysql"

    echo "Itterate users in /home/.backup"
    for username in `awk -F: '{print $1}' /home/.backup`
    do
        echo "Backing up user: $username"
        /bin/tar -czpf /backup/${timestampbackup}/${username}.tar.gz /home/${username} || error_exit "${LINENO}: Error backing up $username"
    done    

    echo "Get configs"
    /bin/tar -czpf /backup/${timestampbackup}/httpdconfigs.tar.gz /etc/httpd/conf.d/ || error_exit "${LINENO}: Error backing up httpd conf.d"


    echo "Copy to S3 bucket"
    /usr/bin/s3cmd --config=/backup/.s3cfg put /backup/ s3://${HOSTNAME_FQDN} --recursive || error_exit "${LINENO}: Error with transfer to S3"

    echo "Remove backupdir"
    /bin/rm /backup/${timestampbackup} -rf || error_exit "${LINENO}: Error deleting backupdir"

    echo "All done!"

}

backup

Прежде чем вы сможете его использовать, вам необходимо установить s3cmd и создать .config файл с вашими учетными данными безопасности S3. (Создаст это при первом использовании).

Не забудьте проверить / изменить пути, потому что они могут отличаться в зависимости от версии / дистрибутива.