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/ Это легко сделать, если у вас есть какие-либо вопросы, просто спросите