ps企业网站模板,聚名网注册,如何设置网站名字吗,网站建设实践描述第17章 大数据定制篇-shell编程
shell编程快速入门 shell变量 设置环境变量 把行号打开 set nu 位置参数变量 预定义变量 在一个脚本中执行了另外一个脚本所以卡住了 CTRLC退出
运算符 operator运算符 条件判断 流程控制
单分支多分支 case语句 for循环 反复的把取出来的i值…第17章 大数据定制篇-shell编程
shell编程快速入门 shell变量 设置环境变量 把行号打开 set nu 位置参数变量 预定义变量 在一个脚本中执行了另外一个脚本所以卡住了 CTRLC退出
运算符 operator运算符 条件判断 流程控制
单分支多分支 case语句 for循环 反复的把取出来的i值累积 while循环 read获取输入
read读取控制台输入用户动态的输入一些数据 函数 系统函数 自定义函数 定时备份数据库 为什么要把脚本放在这个目录下
因为这个目录下面是root用户执行的权限将来也会用root身份给它设置任务调度
当代码比较多时可以边写边测试
需求是如果BACKUP目录下没有这个以当前时间为名字的目录就创建一个
mkdir -p指令的意思是 确保目录名称存在不存在的就建一个。
#!/bin/bash
# 备份目录指定了备份文件存储的根目录
BACKUP/data/backup/db
# 当前时间使用 date 命令获取当前的日期和时间格式为年-月-日_时:分:秒
DATETIME$(date %Y-%m-%d_%H%M%S)
# 数据库的主机地址这里使用的是本地主机
HOSTlocalhost
# 数据库用户名使用 root 用户
DB_USERroot
# 数据库密码此处为 *********
DB_PW*********
# 备份的数据库名要备份的数据库是 wujiao1
DATABASEwujiao1# 创建备份目录如果不存在就创建
# [! -d ${BACKUP}/${DATETIME} ] 是一个条件判断用于检查备份目录是否存在
#! -d 表示目录不存在
# 表示逻辑与如果前面的条件为真则执行后面的命令
# mkdir -p 命令用于创建目录-p 选项表示如果父目录不存在会一并创建
[! -d ${BACKUP}/${DATETIME} ] mkdir -p ${BACKUP}/${DATETIME}# 备份数据库
# mysqldump 是一个用于备份 MySQL 数据库的工具
# -u${DB_USER} 指定数据库用户名
# -p${DB_PW} 指定数据库密码
# --host${HOST} 指定数据库所在的主机地址
# -q 表示使用安静模式减少输出信息
# -R 表示备份存储过程和函数
# --databases ${DATABASE} 表示备份的数据库
# | 管道符将 mysqldump 的输出传递给下一个命令
# gzip 用于压缩输出的 SQL 文件
# 重定向操作符将压缩后的文件存储到指定的备份目录中
mysqldump -u${DB_USER} -p${DB_PW} --host${HOST} -q -R --databases ${DATABASE} | gzip ${BACKUP}/${DATETIME}/$DATETIME.sql.gz# 将文件处理成 tar.gz
# cd ${BACKUP} 切换到备份目录
cd ${BACKUP}
# tar 命令用于打包文件和目录
# -z 表示使用 gzip 进行压缩
# -c 表示创建新的压缩包
# -v 表示显示详细信息
# -f 表示指定压缩包的名称
# $DATETIME.tar.gz 是要创建的压缩包的名称
# ${DATETIME} 是要打包的目录
tar -zcvf $DATETIME.tar.gz ${DATETIME}
# 删除对应的备份目录
# rm -rf 命令用于删除文件和目录-r 表示递归删除-f 表示强制删除
rm -rf ${BACKUP}/${DATETIME}
这个脚本的整体功能是备份 MySQL 数据库。具体步骤如下
首先定义了一些变量包括备份目录 BACKUP、当前时间 DATETIME、数据库主机 HOST、数据库用户名 DB_USER、数据库密码 DB_PW 和要备份的数据库 DATABASE。检查并创建备份目录。使用 [! -d ${BACKUP}/${DATETIME} ] mkdir -p ${BACKUP}/${DATETIME} 确保存储备份的目录存在如果不存在则创建它。使用 mysqldump 命令备份数据库。它将数据库的内容输出通过管道传递给 gzip 进行压缩并将压缩后的文件存储在 ${BACKUP}/${DATETIME}/$DATETIME.sql.gz 中。切换到备份目录使用 tar 命令将备份目录打包为 tar.gz 文件以方便存储和传输。最后使用 rm -rf 命令删除之前创建的备份目录只保留最终的 tar.gz 文件。
需要注意的是
该脚本中的数据库密码是以明文形式存储的在安全要求较高的环境中这样的做法可能存在安全隐患可以考虑使用环境变量或其他更安全的方式存储密码。确保 mysqldump 命令在系统中可用并且用户具有足够的权限访问数据库。在使用 rm -rf 删除目录时要小心因为它会强制删除文件和目录可能会导致误删重要数据建议在使用前进行测试。
#!/bin/bash
#备份目录
BACKUP/data/backup/db
#当前时间
DATETIME$(date %Y-%m-%d_%H%M%S)
#数据库的主机地址
HOSTlocalhost
#数据库用户名
DB_USERroot
#数据库密码
DB_PW*********
#备份的数据库名
DATABASEwujiao1#创建备份目录如果不存在就创建
[ ! -d ${BACKUP}/${DATETIME} ] mkdir -p ${BACKUP}/${DATETIME}#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host${HOST} -q -R --databases ${DATABASE} | gzip ${BACKUP}/${DATETIME}/$DATETIME.sql.gz#将文件处理成 tar.gz
cd ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}#删除10天前的备份文件
find ${BACKUP} -atime 10 -name *.tar.gz -exec rm -rf.{} \;
echo 备份数据库${DATABASE} 成功~ 认真复习一下这个案例
这一部分写的时候一定要注意空格
小结梳理