Я собрал скрипт для резервного копирования моей базы данных на общем хосте. Сценарий выглядит следующим образом:

mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +%Y:%m:%d:%H:%M:%S).gz

Учетные данные базы данных хранятся в файле .cnf в /home /[user], а ключ шифрования в файле ключей показан в скрипте. Когда я запускаю этот скрипт через SSH, все работает правильно и создается файл резервной копии. Однако файлы, созданные cronjob для выполнения в начале каждого дня, не создаются.

Есть идеи?

Большое спасибо.

2 ответа2

1

Используйте следующее для создания задания cron под правильной учетной записью пользователя.

crontab -u <username> -e

Кроме того, экранируйте% с помощью '\'.

mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +\%Y:\%m:\%d:\%H:\%M:\%S).gz
0

Решением, которое я разработал, было добавление в начало команды: cd /home / [user] / && {rest of command} как /home / [user] / - это место, где учетные данные mysql хранились в файле .cnf, который mysqldump требуется для свалки. Я также избежал "%" в то же время, так что, возможно, это также помогает. Спасибо @ alex-atkinson за совет по спасению.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .