我每天都尝试使用 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 中运行的程序的输出。您要么必须用引号将完整的 commando 括起来 - 或者最好将 commando 放在脚本文件中,然后直接调用该脚本
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