Я разработал сценарий, который моя компания использует для резервного копирования клиентских баз данных на нашем сервере путем создания файла дампа их баз данных. Вот мой код:
$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) и просматривает каждую из них, чтобы создать файл резервной копии в каталоге этого клиента. Этот сценарий отлично работает, когда его запускают вручную. Проблема, с которой я столкнулся, заключается в том, что он не работает, когда я запускаю его как задание Cron. Электронное письмо от задания Cron содержит эту ошибку для каждой попытки резервного копирования БД:
sh: site-backups/CLIENT_DIRECTORY/DB_DUMP_FILE.sql: No such file or directory
Таким образом, по какой-либо причине задание Cron не может создать / записать файл дампа БД. Я не могу понять этого. Просто кажется странным, что скрипт отлично работает при ручном выполнении. У кого-нибудь есть идеи? Заранее спасибо!
Адам