使用 crontab 自动创建备份

使用 crontab 自动创建备份

我正在尝试使用 crontab 自动备份 mysql 数据库,但当我直接在 /etc/crontab 文件中输入命令时,备份创建成功

19 16 * * * root mysqldump -u root -prootroot -h192.168.4.5 radius  | gzip > /etc/freeradius/nh.sql.gz

上述命令运行良好,但是当我将此命令放入文件中并从 crontab 执行该文件时,无法创建数据库,这是 /etc/freeradius/backup.sh 的内容

mysqldump -u root -prootroot -h192.168.4.5 radius | gzip > /etc/freeradius/nh.sql.gz

这是 crontab 文件的内容

46 16     * * *   root    /etc/freeradius/backup.sh

但即使执行了命令,也没有任何事情发生,正如我在系统日志文件中看到的那样

答案1

创建一个文件db_dump.sh-> 脚本,将数据库内容转储到目录“/backups/”中的单独文件中

#!/bin/bash

mysqldump -x --add-drop-table  --all-databases > /backups/mysqldb-`date +%F-%I%p`.sql

/usr/bin/mysql -e 'show databases' | /usr/bin/awk '{print $1}' | /bin/grep -v "^Database$" | /usr/bin/xargs -i{} /usr/bin/mysqldump --single-transaction --opt -Q -r /backups/`date +%F-%I%p`-{}.sql {}

gzip -q /backups/*.sql

确保其db_dump.sh是可执行的。

添加到 crontab,在我的例子中是每天晚上 10 点:

crontab -e

并添加:

0 22 * * * /db_dump.sh

如需完整备份和详细说明,请访问:https://github.com/zauberware/automated-server-backups

答案2

将其backup.sh变成适当的 shell 脚本:

#!/bin/bash
mysqldump -u root -prootroot -h192.168.4.5 radius | | gzip > /etc/freeradius/nh.sql.gz

并且不要忘记使用以下命令使其可执行

 chmod 700 /etc/freeradius/backup.sh

相关内容