Я пытаюсь использовать задачу задания cron для резервного копирования моей базы данных, но когда я пытаюсь добавить скрипт в задание cron, появляется сообщение об ошибке:
Невозможно установить символ ">"
Это сценарий, который я использую:
mysqldump -u "username" --password='****' --no-create-info --no-tablespaces "username" > /home/"username"/public_html/_backup/db__$(date +\%Y-\%m-\%d_\%H_\%M_\%S).sql
Если я запускаю тот же скрипт через консоль SSH, он создает файл просто отлично, но я не могу создать cron из-за этой ошибки.
Поскольку я нахожусь на общем хостинге, я не могу использовать другие функции php, такие как exec()
потому что они по умолчанию заблокированы из-за соображений безопасности.
Поддержка сказала, что я должен уйти от символа, потому что они не разрешены, но тогда скрипт терпит неудачу, потому что он недействителен. Есть ли способ исправить это?
cron просто пытается запустить вашу командную строку без вызова оболочки. Перенаправление вывода является особенностью оболочки, хотя и не будет понято командой mysqldump
.
Теперь у вас есть два варианта:
У последнего метода есть дополнительное преимущество, что вы можете легко определить точную среду исполнения. cron обычно определяет очень мало переменных окружения, и это может быть болью. Внутри вашего скрипта вы можете указать свой файл $ HOME/.bashrc (или любой другой файл), установить переменную пути и т.д.