PHP - MySQL - Резервное копирование базы данных ежедневно

Я разработал программу, которая работает (на стороне сервера) с PHP и MySQL. Последнее, что мне нужно сделать, это сделать автоматическое ежедневное резервное копирование базы данных.

Это то, что я думал, может быть самым простым: написать скрипт php, который раз в 24 часа сохраняет файл (имя которого будет меткой времени) в определенной папке на сервере. В сочетании с машиной времени или другим программным обеспечением для резервного копирования этой папки на внешний диск должно быть достаточно.

Итак, теперь вопросы: как мне сделать PHP-скрипт для автоматического запуска один раз в день? Как сохранить файл с резервной копией sql из скрипта php?(Аналог экспорта phpMyAdmin как sql)

Спасибо!

3 ответа

Решение

Если вы работаете apache сервер:

sudo nano /etc/crontab

Добавьте ниже строки:

0 0 * * * root mysqldump -u root -proot db_name > /home/username/db_backup/$( date +"\%Y_\%m_\%d" ).sql

0 0 * * * => каждые 24 часа

Если ваш сервер Linux, вы можете создать cron, используя этот скрипт: cronsql.sh,

#!/bin/bash

path=/home/backup/
projet=(databasename1 databasename2)
now=$(date +"%Y-%m-%d")

for arg in ${projet[*]}
do
    if [ ! -d $path$arg ]; then
        mkdir $path$arg
    fi
    cd $path$arg
    mkdir dump$now
    cd dump$now
    mysqldump -dBR --triggers -p"dbpassword" $arg > structure.sql
    mysqldump --no-create-info -p"dbpassword" $arg > data.sql

done

Он создаст папку с именем базы данных. Внутри - папка с датой. Внутри папки - файл struct.sql и файл data.sql.

>databasename1
---->20151009
    ---->data.sql
    ---->structure.sql
---->20151008
    ---->data.sql
    ---->structure.sql
---->20151007
    ---->data.sql
    ---->structure.sql

для использования cron crontab -e

затем добавьте 59 23 * * * /home/backup/cronsql.sh если cronsql.sh находится в /home/backup/

И последнее, но не менее важное, вы можете добавить в crontab

01 01 * * * find /home/backup/ -mindepth 2 -ctime +30 -exec rm -fr {} +

Он удалит каждый файл / папку старше 30 дней. Таким образом, у вас есть резервная копия за последние 30 дней. И нет необходимости чистить его вручную

Я узнал, что вы можете сделать это с * летучей мышью, если вы работаете в Windows. Это сохранит ваши базы данных как zip, вы также можете загрузить их в ftp, немного изменив этот скрипт. Перейдите по этой ссылке: http://www.redolive.com/utah-web-designers-blog/automated-mysql-backup-for-windows/ Это легко сделать, если у вас есть какие-либо вопросы, просто спросите

Другие вопросы по тегам