我是linux cron的新手,我使用的是mysql DB,我的数据库名称是finaldb,我想每隔一小时拿一次这个数据库,
我有一个名为dailbackup的文件夹,在这个我有文件夹的日期明智,在这个每个文件夹我有备份mysql db文件
像final_db_9.sql这样的名字(这个备份是在早上9点拍摄的),final_db_13.sql(这个备份是在中午1点拍摄的,就像那样,
这个过程目前正在手动进行,是否有可能使其自动化,任何想法,建议,
创建包含以下内容的PHP脚本:
$dbFile = 'final_db'.date('H').'.sql.gz';
$dbHost = 'localhost'; // Database Host
$dbUser = 'username'; // Database Username
$dbPass = 'password'; // Database Password
exec( 'mysqldump --host="'.$dbHost.'" --user="'.$dbUser.'" --password="'.$dbPass.'" --add-drop-table "finaldb" | gzip > "'.$dbFile.'"' );
Run Code Online (Sandbox Code Playgroud)
在某个地方创建一个脚本来进行滚动备份,如下所示(未经测试,但应该可以运行):
#!/bin/bash
BKPDIR=dailbackup # You must use absolute path here
DB=finaldb
USERNAME=myusername
PASSWORD=mypassword
BKPFILE=${BKPDIR}/`date +%Y-%m-%d`/final_db_`date +%H`.sql
# Create backup
mysqldump --user=${USERNAME} --password=${PASSWORD} ${DB} | gzip -c > ${BKPFILE}
# Remove older backups (> 7 days),
# unless you want to run out of drive space
find ${BKPDIR} -mtime +7 -print0 | xargs -0 rm -rf
Run Code Online (Sandbox Code Playgroud)
然后设置此脚本以每小时运行一次:
crontab -e
0 * * * * /absolute-path-to-where-you-saved-the-script
Run Code Online (Sandbox Code Playgroud)