我已经开发了一个使用PHP和MySQL工作(服务器端)的议程。我需要做的最后一件事是对数据库进行authomatic每日备份。
我认为这可能是最简单的:编写一个php脚本,每24小时一次,在服务器的某个文件夹中保存一个文件(谁的名字将是时间戳)。将此文件与时间机器或其他备份软件相结合,将此文件夹备份到外部磁盘应该就足够了。
现在,问题是:如何让php脚本每天自动运行一次?如何从php脚本保存带有sql备份的文件?(类似于phpMyAdmin export as sql)
谢谢!
答案 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
然后添加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/ 强> 如果您有任何疑问,请轻松搞定