Shell 脚本恢复数据
使用场景
当搭建了一个测试站时,开放给广大用户进行使用,但部分用户会对其角色,权限进行修改,或账号密码进行修改,修改之后影响其他网友进行查阅系统,以及翻看系统信息,若不对系统进行控制,可对数据库进行直接恢复数据
MySQL
#!/bin/bash
# 数据库连接信息
DB_USER="数据库用户名"
DB_PASSWORD="数据库密码"
DB_HOST="localhost"
DB_NAME="数据库名称"
# SQL 文件路径
SQL_FILE="/www/backup/database/back.sql"
# 检查 SQL 文件是否存在
if [ ! -f "$SQL_FILE" ]; then
echo "错误: SQL 文件 $SQL_FILE 不存在。"
exit 1
fi
# 执行 SQL 文件
mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" < "$SQL_FILE"
# 检查执行结果
if [ $? -eq 0 ]; then
echo "SQL 文件执行成功。"
else
echo "SQL 文件执行失败。"
fi
Redis
#!/bin/bash
# Redis 服务器地址
REDIS_HOST="localhost"
# Redis 服务器端口
REDIS_PORT="6379"
# Redis 服务器密码,如果没有则为空
REDIS_PASSWORD="123456"
# 要操作的 Redis 数据库编号
REDIS_DB=0
# 检查 redis-cli 是否可用
if ! command -v redis-cli &> /dev/null; then
echo "错误: redis-cli 未安装,请先安装 Redis 客户端。"
exit 1
fi
# 构建 redis-cli 命令
if [ -z "$REDIS_PASSWORD" ]; then
REDIS_COMMAND="redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB FLUSHDB"
else
REDIS_COMMAND="redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD -n $REDIS_DB FLUSHDB"
fi
# 执行命令
echo "正在删除 Redis 数据库 $REDIS_DB 中的所有数据..."
$REDIS_COMMAND
# 检查执行结果
if [ $? -eq 0 ]; then
echo "Redis 数据库 $REDIS_DB 中的数据已成功删除。"
else
echo "删除 Redis 数据库 $REDIS_DB 中的数据时出错。"
fi
可对两个进行合并执行
#!/bin/bash
# 数据库连接信息
DB_USER="数据库用户名"
DB_PASSWORD="数据库密码"
DB_HOST="localhost"
DB_NAME="数据库名称"
# SQL 文件路径
SQL_FILE="/www/backup/database/back.sql"
# 检查 SQL 文件是否存在
if [ ! -f "$SQL_FILE" ]; then
echo "错误: SQL 文件 $SQL_FILE 不存在。"
exit 1
fi
# 执行 SQL 文件
mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" < "$SQL_FILE"
# 检查执行结果
if [ $? -eq 0 ]; then
echo "SQL 文件执行成功。"
else
echo "SQL 文件执行失败。"
fi
# Redis 服务器地址
REDIS_HOST="localhost"
# Redis 服务器端口
REDIS_PORT="6379"
# Redis 服务器密码,如果没有则为空
REDIS_PASSWORD="123456"
# 要操作的 Redis 数据库编号
REDIS_DB=0
# 检查 redis-cli 是否可用
if ! command -v redis-cli &> /dev/null; then
echo "错误: redis-cli 未安装,请先安装 Redis 客户端。"
exit 1
fi
# 构建 redis-cli 命令
if [ -z "$REDIS_PASSWORD" ]; then
REDIS_COMMAND="redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB FLUSHDB"
else
REDIS_COMMAND="redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD -n $REDIS_DB FLUSHDB"
fi
# 执行命令
echo "正在删除 Redis 数据库 $REDIS_DB 中的所有数据..."
$REDIS_COMMAND
# 检查执行结果
if [ $? -eq 0 ]; then
echo "Redis 数据库 $REDIS_DB 中的数据已成功删除。"
else
echo "删除 Redis 数据库 $REDIS_DB 中的数据时出错。"
fi
使用宝塔计划任务
计划任务 => 添加任务 => 选择Shell脚本 => 设置任务名称 => 设置执行周期 => 设置执行用户(必须要有执行权限的用户) => 脚本内容(填写上方脚本)
注意要将数据库名称,以及数据库的密码进行修改指定为自己的
点击执行查看日志是否执行成功