我开发了一个脚本,我公司用它来通过创建数据库的转储文件来备份我们服务器上的客户端数据库。这是我的代码:
$result=mysql_query("SELECT * FROM backup_sites");
while($row=mysql_fetch_array($result)){
$backup_directory=$row["backup_directory"];
$thishost=$row["host"];
$thisusername=$row["username"];
$thispassword=$row["password"];
$thisdb_name=$row["db_name"];
$link=mysql_connect("$thishost", "$thisusername", "$thispassword");
if($link){
mysql_select_db("$thisdb_name");
$backupFile = $thisdb_name ."-". date("Y-m-d-H-i-s", strtotime ("+1 hour")) . '.sql';
$command = "/usr/bin/mysqldump -h $thishost -u $thisusername -p$thispassword $thisdb_name > site-backups/$backup_directory/$backupFile";
system($command);
}
}
脚本从表(backup_sites)获取所有客户端的db信息,并循环遍历每个客户端的db信息以在该客户端的目录中创建备份文件。手动执行此脚本时效果很好。我遇到的问题是,当我将其设置为作为Cron作业运行时,它不起作用。来自Cron作业的电子邮件包含每个数据库备份尝试的此错误:
sh: site-backups/CLIENT_DIRECTORY/DB_DUMP_FILE.sql: No such file or directory
因此无论出于何种原因,Cron作业都无法创建/写入数据库转储文件。我无法解决这个问题。手动执行脚本时效果很好,这似乎很奇怪。有人有主意吗?提前谢谢!
亚当
答案 0 :(得分:6)
考虑使用绝对路径。 Cron可能有不同的基本目录。