
Я пытаюсь делать резервную копию таблицы моей базы данных каждый день, используя mysqldump, screen и crontab. Если я запускаю только mysqldump
, он делает дамп правильно, но если я делаю это через screen
, выходной файл пустой.
Редактирование Crontab
crontab -e
Добавление команды
0 0 * * * screen -dmS MYDATABASE_MYTABLE_backup mysqldump -u MYUSERNAME -pMYPASSWORD -h MYHOSTNAME MYDATABASE MYTABLE --compress | gzip > /root/backup/database/MYDATABASE_MYTABLE_`date +\%Y-\%m-\%d`.sql.gz
решение1
Не совсем уверен, чего вы хотите добиться с помощью screen в этом сценарии и зачем он вообще нужен. Но вы перенаправляете (с помощью | .. > ) вывод screen в файл дампа, а не вывод программы, которая работает в screen. Вам либо нужно заключить всю команду в кавычки, либо, возможно, лучше поместить команду в файл скрипта и просто вызвать скрипт
myscript.sh:
#!/bin/sh
mysqldump -u MYUSERNAME -pMYPASSWORD -h MYHOSTNAME MYDATABASE MYTABLE --compress | gzip > /root/backup/database/MYDATABASE_MYTABLE_`date +\%Y-\%m-\%d`.sql.gz
экран -dmS MYDATABASE_MYTABLE_backup myscript.sh