我需要知道如何使用 cron 作业每 6 小时删除或删除一个数据库,然后他们使用演示 .sql 创建它。在我的 cpanel 中,我像这样创建 cron:
0 0 1 * * /home/escyv/restore_data.sh
并且 cron 执行命令,但在 cron 作业执行命令时不进行任何删除。
这里的脚本:
restore_data.sh
#! /bin/sh
clear;
#fill in your database information here
user="escyv_cyv";
password="ky21m1";
server="localhost";
database_name="escyv_cyv";
#path to the backup database file
restore_file="0db0/escyv_db.sql";
#here the script deletes all your tables in the database
mysql --user=$user --password=$password -h $server -BNe "SHOW TABLES" $database_name | tr '\n' ',' | sed -e 's/,$//' | awk '{print "SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS " $1 ";SET
FOREIGN_KEY_CHECKS = 1;"}' | mysql --user=$user --password=$password -h $server $database_name;
echo "Base de datos limpiandose!";
echo "Restaurando Base de Datos..";
#here the script restores the database
mysql --user=$user --password=$password host=$server $database_name < $restore_file;
echo "Base de datos restaurada!";
我对其进行测试,将恢复文件 escyv_db.sql 的名称更改为 escyv_db1.sql 以查看站点是否显示错误,但向我显示数据库中的全部信息...所以我认为该命令没有任何作用..
对不起我的英语不好......不是我的母语
此致!
安德烈斯
-----编辑----- 这个脚本正在工作! 感谢@itsols
这是新的 restore_data.sh
#! /bin/sh
clear;
#here the script deletes all your tables in the database
mysql -u escyv -pky21m1 -e 'drop database escyv_cyv;'
echo "Base de datos limpiandose!";
mysql -u escyv -pky21m1 -e 'create database escyv_cyv;'
#here the script restores the database
mysql -u escyv_cyv -pky21m1 escyv_cyv < 0db0/escyv_db.sql
echo "Restaurando Base de Datos..";
echo "Base de datos restaurada!";