PHP-MySQL-每日备份数据库

PHP-MySQL-每日备份数据库,php,mysql,backup,database-backups,Php,Mysql,Backup,Database Backups,我开发了一个使用PHP和MySQL的议程(服务器端)。我需要做的最后一件事是对数据库进行authomatic每日备份 这是我认为最简单的方法:编写一个php脚本,每24小时在服务器的某个文件夹中保存一个文件(文件名为时间戳)。结合time machine或其他备份软件将此文件夹备份到外部磁盘就足够了 现在的问题是:如何让php脚本每天自动运行一次?如何使用php脚本的sql备份保存文件?(类似于phpMyAdmin导出为sql) 谢谢 如果您的服务器是linux,则可以使用以下脚本创建cron:

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

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

现在的问题是:如何让php脚本每天自动运行一次?如何使用php脚本的sql备份保存文件?(类似于phpMyAdmin导出为sql)


谢谢

如果您的服务器是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
为克朗 使用
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天就有一次备份。
而且不需要手动清理它

如果您的服务器是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
为克朗 使用
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天就有一次备份。
如果您正在运行apache服务器,则无需手动清理它:

sudo nano /etc/crontab
添加以下行:

0 0 * * * root mysqldump -u root -proot db_name > /home/username/db_backup/$( date +"\%Y_\%m_\%d" ).sql
0***=>每24小时一次


如果您正在运行apache服务器:

sudo nano /etc/crontab
添加以下行:

0 0 * * * root mysqldump -u root -proot db_name > /home/username/db_backup/$( date +"\%Y_\%m_\%d" ).sql
0***=>每24小时一次


我发现,如果你在运行windows,你可以用*棒来完成。 这将使您的数据库安全为zip,您还可以通过稍微更改此脚本将它们上载到ftp。 请点击此链接:
这很容易做到,如果你有任何问题,只要问一下就行了。我发现,如果你在运行windows,你可以用*bat来做。 这将使您的数据库安全为zip,您还可以通过稍微更改此脚本将它们上载到ftp。 请点击此链接:
这很容易做到,如果您有任何问题,只需询问

,您可能还想从主服务器上保存备份。如果备份也被破坏了,那么备份就没有意义了。不要用PHP来做这件事。大家好,我知道这篇文章有点老了,但在阅读了你们的答案后,我确实有一个后续问题,如果我想通过电子邮件发送备份,或者专门上传到谷歌硬盘,我该如何实现?谢谢。您可能还想保存主服务器上的备份。如果备份也被破坏了,那么备份就没有意义了。不要用PHP来做这件事。大家好,我知道这篇文章有点老了,但在阅读了你们的答案后,我确实有一个后续问题,如果我想通过电子邮件发送备份,或者专门上传到谷歌硬盘,我该如何实现?谢谢。这就是我应该做的吗?我想我应该用数据库名替换db_name,用我的用户名替换/username/。我不需要做其他事情吗?设置数据库的主机/用户/通行证?
0***
并不是指每24小时,而是指每天午夜。这不完全一样,但除此之外,答案不错+1@pablito.aven:您需要更改
db_name
和要将备份文件放在哪里的目录。这就是我应该做的所有事情?我想我应该用数据库名替换db_name,用我的用户名替换/username/。我不需要做其他事情吗?设置数据库的主机/用户/通行证?
0***
并不是指每24小时,而是指每天午夜。这不完全一样,但除此之外,答案不错+1@pablito.aven:您需要更改
db_name
和要将备份文件放在哪里的目录。