Я пытаюсь запустить php-скрипт во время задания cron, чтобы выгрузить мою базу данных MySQL в папку для резервного копирования.
$DBHost = 'localhost';
$DBName = 'mydatabase';
$DBUser = 'myuser';
$DBPassword = 'mypassword';
$PATH = "/home/mysite/Backups/";
$FILE_NAME = "backup-" . date( "Y-m-d_H:i:s" ) . ".sql.gz";
exec( '/usr/local/bin/mysqldump -u ' . $DBName . ' -p' . $DBPassword . ' ' . $DBName . ' | gzip --best > ' . $PATH . $FILE_NAME );
Но я продолжаю получать ошибку:
sh: -c: строка 0: неожиданный EOF при поиске соответствия ')'
sh: -c: строка 1: синтаксическая ошибка: неожиданный конец файла
Я проверил все )
и не могу найти никакого несоответствия. Если я прокомментирую команду exec
я не получу ошибку.
Кто-нибудь видит, что я делаю неправильно?
Почему бы не написать весь код в sh?
#!/bin/bash
dbname="database"
dbuser="user"
dbpass="password"
path="/home/backup"
now=$(date + "%Y-%m-%d")
/usr/bin/mysqldump -u $dbuser -p$dbpass $dbname | gzip > $path/backup_$now.sql.gz
сохраните его, например, backup.sh,
а затем используйте crontab -e, чтобы добавить новое задание cron (например, 2:15 в день)
15 2 * * * /home/backup/backup.sh