PHP - MySQL - 每天备份数据库
PHP - MySQL - Backup database daily
我开发了一个与 PHP 和 MySQL 一起工作(服务器端)的议程。我需要做的最后一件事是对数据库进行每日自动备份。
这可能是我认为最简单的方法:编写一个 php 脚本,每 24 小时在服务器的某个文件夹中保存一个文件(其名称将是一个时间戳)。结合时间机器或其他备份软件将此文件夹备份到外接磁盘应该就可以了。
所以现在,问题是:我如何将 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
对于 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 天就有一个备份。
而且无需手动清理
如果您是 运行 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 * * * => every 24 hours
我发现,如果您是 运行 windows,您可以使用 *bat 来完成。
这会将您的数据库保存为 zip,您也可以通过稍微更改此脚本将它们上传到 ftp。
按照这个 link:
http://www.redolive.com/utah-web-designers-blog/automated-mysql-backup-for-windows/
做起来很简单,有问题就问
我开发了一个与 PHP 和 MySQL 一起工作(服务器端)的议程。我需要做的最后一件事是对数据库进行每日自动备份。
这可能是我认为最简单的方法:编写一个 php 脚本,每 24 小时在服务器的某个文件夹中保存一个文件(其名称将是一个时间戳)。结合时间机器或其他备份软件将此文件夹备份到外接磁盘应该就可以了。
所以现在,问题是:我如何将 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
对于 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 天就有一个备份。 而且无需手动清理
如果您是 运行 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 * * * => every 24 hours
我发现,如果您是 运行 windows,您可以使用 *bat 来完成。 这会将您的数据库保存为 zip,您也可以通过稍微更改此脚本将它们上传到 ftp。 按照这个 link: http://www.redolive.com/utah-web-designers-blog/automated-mysql-backup-for-windows/ 做起来很简单,有问题就问