Linux-day08

打印 上一主题 下一主题

主题 1017|帖子 1017|积分 3051

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第17章 大数据定制篇-shell编程

shell编程快速入门





shell变量






设置环境变量




把行号打开 set nu

位置参数变量





预定义变量




在一个脚本中实行了别的一个脚本所以卡住了  CTRL+C退出
运算符


operator运算符



条件判定





流程控制

单分支多分支


case语句



for循环





反复的把取出来的i值累积


while循环



read获取输入

read读取控制台输入,用户动态的输入一些数据



函数


体系函数






自定义函数




定时备份数据库



为什么要把脚本放在这个目录下
由于这个目录下面是root用户实行的权限,未来也会用root身份给它设置任务调度
当代码比力多时,可以边写边测试
需求是如果BACKUP目录下没有这个以当前时间为名字的目录,就创建一个
mkdir -p指令的意思是, 确保目录名称存在,不存在的就建一个。
  1. #!/bin/bash
  2. # 备份目录,指定了备份文件存储的根目录
  3. BACKUP=/data/backup/db
  4. # 当前时间,使用 date 命令获取当前的日期和时间,格式为年-月-日_时:分:秒
  5. DATETIME=$(date +%Y-%m-%d_%H%M%S)
  6. # 数据库的主机(地址),这里使用的是本地主机
  7. HOST=localhost
  8. # 数据库用户名,使用 root 用户
  9. DB_USER=root
  10. # 数据库密码,此处为 *********
  11. DB_PW=*********
  12. # 备份的数据库名,要备份的数据库是 wujiao1
  13. DATABASE=wujiao1
  14. # 创建备份目录,如果不存在,就创建
  15. # [! -d "${BACKUP}/${DATETIME}" ] 是一个条件判断,用于检查备份目录是否存在
  16. #! -d 表示目录不存在
  17. # && 表示逻辑与,如果前面的条件为真,则执行后面的命令
  18. # mkdir -p 命令用于创建目录,-p 选项表示如果父目录不存在,会一并创建
  19. [! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
  20. # 备份数据库
  21. # mysqldump 是一个用于备份 MySQL 数据库的工具
  22. # -u${DB_USER} 指定数据库用户名
  23. # -p${DB_PW} 指定数据库密码
  24. # --host=${HOST} 指定数据库所在的主机地址
  25. # -q 表示使用安静模式,减少输出信息
  26. # -R 表示备份存储过程和函数
  27. # --databases ${DATABASE} 表示备份的数据库
  28. # | 管道符,将 mysqldump 的输出传递给下一个命令
  29. # gzip 用于压缩输出的 SQL 文件
  30. # > 重定向操作符,将压缩后的文件存储到指定的备份目录中
  31. mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
  32. # 将文件处理成 tar.gz
  33. # cd ${BACKUP} 切换到备份目录
  34. cd ${BACKUP}
  35. # tar 命令用于打包文件和目录
  36. # -z 表示使用 gzip 进行压缩
  37. # -c 表示创建新的压缩包
  38. # -v 表示显示详细信息
  39. # -f 表示指定压缩包的名称
  40. # $DATETIME.tar.gz 是要创建的压缩包的名称
  41. # ${DATETIME} 是要打包的目录
  42. tar -zcvf $DATETIME.tar.gz ${DATETIME}
  43. # 删除对应的备份目录
  44. # rm -rf 命令用于删除文件和目录,-r 表示递归删除,-f 表示强制删除
  45. 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 删除目录时要小心,由于它会逼迫删除文件和目录,大概会导致误删紧张数据,建议在使用前举行测试。
  1. #!/bin/bash
  2. #备份目录
  3. BACKUP=/data/backup/db
  4. #当前时间
  5. DATETIME=$(date +%Y-%m-%d_%H%M%S)
  6. #数据库的主机(地址)
  7. HOST=localhost
  8. #数据库用户名
  9. DB_USER=root
  10. #数据库密码
  11. DB_PW=*********
  12. #备份的数据库名
  13. DATABASE=wujiao1
  14. #创建备份目录,如果不存在,就创建
  15. [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
  16. #备份数据库
  17. mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
  18. #将文件处理成 tar.gz
  19. cd ${BACKUP}
  20. tar -zcvf $DATETIME.tar.gz ${DATETIME}
  21. #删除对应的备份目录
  22. rm -rf ${BACKUP}/${DATETIME}
  23. #删除10天前的备份文件
  24. find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf.{} \;
  25. echo "备份数据库${DATABASE} 成功~"
复制代码




认真复习一下这个案例
这一部门写的时间肯定要留意空格
小结梳理



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表