PHP - MySQL - 每日备份数据库

时间:2015-10-09 15:27:17

标签: php mysql backup database-backups

我已经开发了一个使用PHP和MySQL工作(服务器端)的议程。我需要做的最后一件事是对数据库进行authomatic每日备份。

我认为这可能是最简单的:编写一个php脚本,每24小时一次,在服务器的某个文件夹中保存一个文件(谁的名字将是时间戳)。将此文件与时间机器或其他备份软件相结合,将此文件夹备份到外部磁盘应该就足够了。

现在,问题是:如何让php脚本每天自动运行一次?如何从php脚本保存带有sql备份的文件?(类似于phpMyAdmin export as sql)

谢谢!

3 个答案:

答案 0 :(得分:4)

如果您正在运行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小时

答案 1 :(得分:0)

如果你的服务器是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

它将生成一个包含数据库名称的文件夹。 在里面,有一个日期文件夹 在文件夹中,有一个structure.sql文件和一个data.sql文件

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

为cron 使用crontab -e

如果cronsql.sh在/ home / backup /

中,则

然后添加59 23 * * * /home/backup/cronsql.sh

最后但并非最不重要的是, 你可以添加crontab

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

删除超过30天的所有文件/文件夹。 所以你每隔30天就有一次备份。 而且无需手动清洁

答案 2 :(得分:0)

我发现,如果你正在运行Windows,你可以使用* bat进行操作。 这将保护您的数据库为zip,您也可以通过稍微更改此脚本将它们上传到ftp。 点击此链接: 的 http://www.redolive.com/utah-web-designers-blog/automated-mysql-backup-for-windows/ 如果您有任何疑问,请轻松搞定