Привет всем, Может ли кто нить помочь с такой проблемой? Пытаюсь сделать backup MySQL базы данных через php скрипт, используя mysqldump. Скрипт таков: <?php $host = "hostname"; $database = "databasename"; $user = "username"; $pass = "password"; $dbh = mysql_connect($host, $user, $pass) or die ("Can't connect to MySQL"); mysql_select_db($database) or die ("Can't connect to db"); $bckp_file = $database.date("Y-m-d-H-i-s").".sql"; $command = "c/wamp/mysql/bin/mysqldump --add-drop-table --add-drop-database -u $user -p $pass $database > $bckp_file"; system ($command); ?> В результате создаеться пустой .sql файл и никакого dump’a в нем нету. Если запускаю содержание переменной $command через коммандную строчку в WinXP получаю полноценны dump. Кто подскажет, где ошибка в скрипте?
PHP: <?php $user = 'root'; $password = 'qwerty'; $database = 'test'; $backfile = $database . date('-d-m-Y-H-i-s') . '.sql'; $command = "mysqldump --add-drop-table -u {$user} --password={$password} {$database} > {$backfile}"; exec($command); Всё Ок.
реальный бекапщик с hosting.440hz.ru Код (Text): hosting(root):/disk2/backup#>cat backup.sh #!/bin/sh rootdir="/disk2/backup/" olddt=`date -v-5d '+%Y.%m.%d'` dt=`date '+%Y.%m.%d'` echo Backup started at ${dt} in ${rootdir} ########################################################## echo -n "Removing old ${olddt} backup files... " rm -rf ${rootdir}${olddt}.* echo done ########################################################## #target="${rootdir}${dt}.httpd.tar.gz" #source="/usr/local/etc/apache2/Includes/" #echo -n "TAR Zipping ${source} to ${target}... " #tar -z -c -f ${target} -P ${source} #chown root:wheel ${target} #chmod 400 ${target} #echo done ########################################################## target="${rootdir}${dt}.etc.tar.gz" source="/etc/" echo -n "TAR Zipping ${source} to ${target}... " tar -z -c -f ${target} -P ${source} chown root:wheel ${target} chmod 400 ${target} echo done ########################################################## target="${rootdir}${dt}.usr.local.etc.tar.gz" source="/usr/local/etc/" echo -n "TAR Zipping ${source} to ${target}... " tar -z -c -f ${target} -P ${source} chown root:wheel ${target} chmod 400 ${target} echo done ########################################################## user="root" pass="*****" filename="${rootdir}${dt}.sql" echo -n "mysqldump start to ${filename}... " /usr/local/bin/mysqldump -q -c -Q --add-drop-table --all-databases --user=${user} --pass=${pass} > $filename chown root:wheel ${filename} chmod 400 ${filename} echo -n "zipping ${filename}... " gzip -f -q ${filename} echo done ########################################################## target="${rootdir}${dt}.www.tar.gz" source="/usr/www/" echo TAR Zipping ${source} to ${target} tar -z -c -f ${target} -P ${source} chown root:wheel ${target} chmod 400 ${target} echo done ########################################################## echo echo ls -la ${rootdir} ########################################################## echo echo find /usr/www/ -ctime -1d | sort # # # hosting(root):/disk2/backup#>lsl total 57143336 drwx------ 2 root wheel 1024 20 ìàé 06:00 ./ drwxrwxr-x 8 root ftp 512 25 àïð 07:07 ../ -r-------- 1 root wheel 329239 16 ìàé 06:00 2008.05.16.etc.tar.gz -r-------- 1 root wheel 10715109 16 ìàé 06:00 2008.05.16.sql.gz -r-------- 1 root wheel 400536 16 ìàé 06:00 2008.05.16.usr.local.etc.tar.gz -r-------- 1 root wheel 11665153412 16 ìàé 08:37 2008.05.16.www.tar.gz -r-------- 1 root wheel 329239 17 ìàé 06:00 2008.05.17.etc.tar.gz -r-------- 1 root wheel 10693190 17 ìàé 06:00 2008.05.17.sql.gz -r-------- 1 root wheel 400536 17 ìàé 06:00 2008.05.17.usr.local.etc.tar.gz -r-------- 1 root wheel 11693519801 17 ìàé 08:13 2008.05.17.www.tar.gz -r-------- 1 root wheel 329239 18 ìàé 06:00 2008.05.18.etc.tar.gz -r-------- 1 root wheel 10703338 18 ìàé 06:00 2008.05.18.sql.gz -r-------- 1 root wheel 400536 18 ìàé 06:00 2008.05.18.usr.local.etc.tar.gz -r-------- 1 root wheel 11693519629 18 ìàé 08:28 2008.05.18.www.tar.gz -r-------- 1 root wheel 329239 19 ìàé 06:00 2008.05.19.etc.tar.gz -r-------- 1 root wheel 10701935 19 ìàé 06:00 2008.05.19.sql.gz -r-------- 1 root wheel 400536 19 ìàé 06:00 2008.05.19.usr.local.etc.tar.gz -r-------- 1 root wheel 11693520311 19 ìàé 08:08 2008.05.19.www.tar.gz -r-------- 1 root wheel 329239 20 ìàé 06:00 2008.05.20.etc.tar.gz -r-------- 1 root wheel 545 20 ìàé 06:00 2008.05.20.sql.gz -r-------- 1 root wheel 400536 20 ìàé 06:00 2008.05.20.usr.local.etc.tar.gz -r-------- 1 root wheel 11693531274 20 ìàé 07:18 2008.05.20.www.tar.gz -r-x------ 1 root wheel 1947 11 ìàð 13:59 backup.sh*
если в $command добавить "2> bckp.log" в конце, то в логе скорее всего будет сказано: И все ок будет, если прописать полный путь d:/.../mysqldump.exe (с такими слешами). Я это написал, потому что пока только это и выяснил, вдруг кому-то поможет. Вразумительного ответа, как найти mysqldump, я пока не нашел. Комманды type mysqldump, whereis mysqldump, locate mysqldump, which mysqldump не работают (по крайней мере на win32 сервере).