PHP-MySQL-每日备份数据库
我开发了一个使用PHP和MySQL的议程(服务器端)。我需要做的最后一件事是对数据库进行authomatic每日备份 这是我认为最简单的方法:编写一个php脚本,每24小时在服务器的某个文件夹中保存一个文件(文件名为时间戳)。结合time machine或其他备份软件将此文件夹备份到外部磁盘就足够了 现在的问题是:如何让php脚本每天自动运行一次?如何使用php脚本的sql备份保存文件?(类似于phpMyAdmin导出为sql)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:
谢谢 如果您的服务器是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
和要将备份文件放在哪里的目录。