我想使用 cron 作业自动备份我的数据库,并且我想使用动态文件名来指示备份日期。
* * * * * mysqldump -udbuser -pdbpassword mydb > /backups/mydb.`date +"%Y-%m-%d"`.sql
但是好像不行。我检查了 cron 日志,它显示如下。
Oct 31 11:18:00 dbuser /usr/sbin/cron[94330]: (dbuser) CMD (mysqldump -udbuser -pdbpassword mydb > /backups/mydb.`date +")
看起来命令没有完全执行。我该如何修复它?
最佳答案
Cronjobs 不理解这些变量。 下面是一个对我有用多年的 php 脚本备份。它备份为sql并直接压缩。
$dbFile = '/data/Backup/backup-'.date('Ymd').'.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 "databasename" | gzip > "'.$dbFile.'"' );
下面是 cronjob
* * * * * /usr/bin/php /path_to_backup_script/backup.php
关于Mysqldump 无法在 FreeBSD 中使用动态文件名与 cron 作业一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53076391/