当前位置:网站首页>shell脚本专题(07):文件由cfs到bos
shell脚本专题(07):文件由cfs到bos
2022-08-01 18:46:00 【51CTO】
一、背景
生产上每天会产生数千个音频文件,大小有几个G。这些文件存放在cfs内,由于cfs使用费用较高,容量较小,需要定期手动转移至空间更大费用更小的bos内。本程序就是将手动操作改为自动化方式。涉及日志输出、文件比对、文件复制、文件删除、监控告警等。
二、名词解释
cfs:文件储存CFS是文件以及协议存储,可以理解为是更高一级的对象储存BOS,文件储存CFS不能做计算,只是网关协议存储,在图片及文件的读写、和安全上级别更高。
bos:对象储存BOS类似于百度云盘,不过是企业级的,对象储存BOS提供一个简单的 Web 服务接口,可用于存储和提取任意数量的数据。
cfs供多台服务器共享使用,使用费用比bos高很多。
三、程序工作逻辑
每天产生的大部分音频文件存放在以日期为名字的目录内,该目录还有一层子目录xxdata,小部分录音文件存放在这个子目录内。首先将n天前的cfs日期目录复制到bos,然后比对是否一致,比对包含md5和diff以及文件数量比较,若都一致则删除原cfs录音文件目录,若有一项不一致则退出,最后通过微信发出成功的通知或失败的告警。
四、日志说明
程序每一步操作都有详细的日志记录,包括源文件目录和目标目录是否存在、复制了哪些文件、删除了哪些文件、md5生成和比对、哪些操作失败了等。程序正常运行或者运行失败都能通过日志定位查看。
五、各模块介绍
本程序共有9个模块,下面一一介绍
1.日志模块logs_bak
本程序共有4个日志,分别是all:记录本程序执行过程中的所有动作;alter:只记录各步骤出错内容,如果成功的话该日志为空;cron:记录每天定时任务执行情况;md5:记录md5生成和比对。
除了cron日志外,其它三个日志在程序运行的时候会以日期割接备份。
2.目录检查模块file_check
检查源文件目录SOURCE_PATH和备份目录DEST_PATH是否存在,因为有可能出现cfs或者bos挂载失败的问题。若路径都在则继续否则报错并退出。
运行日志截图:
3.生成源文件md5值模块md5_a
获取日期目录第一层的音频文件列表并生成md5文件md5_a.txt,该文件在复制到bos后进行md5比对时会用到。若正常生成该文件则继续,否则写入告警日志并退出。
运行日志截图:
4.生成源文件md5值模块md5_b
获取日期目录第二层的录音文件列表并生成md5文件md5_b.txt,该文件在复制到bos后进行md5比对时会用到。若正常生成该文件则继续,否则写入告警日志并退出。
运行日志截图:
5.文件复制模块file_cp
通过cp命令将录音文件由cfs复制到bos,复制过程中详细记录日志。若成功复制则继续,否则写入告警日志并退出。
运行日志截图:
6.md5比较模块diff_md5_a
在bos的首层目标目录运行’md5sum -c md5_a.txt’进行第一层的录音文件md5比对,若比对正常则继续,否则写入告警日志并退出。
运行日志截图:
7.md5比较模块diff_md5_b
在bos的第二层目标目录运行’md5sum -c md5_b.txt’进行第二层的录音文件md5比对,若比对正常则继续,否则写入告警日志并退出。
运行日志截图:
8.源文件删除模块org_file_rm
自动化删除源录音文件前会进行首层和第二层的diff比对以及源和目标文件个数的比对,若这三个条件都满足则继续,若一个不满足则写入告警日志并退出。
运行日志截图:
9.告警或通知模块
通过spug平台自定义脚本发出告警或者通知消息
若告警日志为空则发出通知消息’the files ${DATE} copy sucessed’,若不为空则发出告警内容。
告警或通知微信截图:
spug平台详见: 自动化运维平台Spug测试
六、运行方式
本程序采用定时任务方式运行,每天凌晨1点开始。
运行日志截图:
更多shell文章详见: shell脚本专题
边栏推荐
猜你喜欢
C#/VB.NET: extracted from the PDF document all form
MySQL 45 Talk | 09 How to choose common index and unique index?
Leetcode72. Edit Distance
Leetcode73. Matrix Zeroing
Topology Parts Disassembly 3D Visualization Solution
【Day_12 0507】查找组成一个偶数最接近的两个素数
MySQL数据库————流程控制
阿里云的域名和ip绑定
【Day_10 0428】井字棋
How many steps does it take to convert an ENS domain name into music?
随机推荐
483-82 (23, 239, 450, 113)
深入浅出Flask PIN
Zabbix6.0 DingTalk robot alarm
C#/VB.NET: extracted from the PDF document all form
LeetCode 0152. Product Maximum Subarray: dp + Roll in Place
【Day_11 0506】求最大连续bit数
行业沙龙第二期丨如何通过供应链数字化业务协同,赋能化工企业降本增效?
LeetCode 0152. 乘积最大子数组:dp + 原地滚动
Summer vacation second week wrap-up blog
阿里云的域名和ip绑定
Summer vacation first week wrap-up blog
Leetcode72. Edit Distance
Friends who want to use the database anytime, anywhere and as you like, all attention!
SQL function TO_DATE (1)
COS 用户实践征文
LeetCode 1374.生成每种字符都是奇数个的字符串
The elder brother of the goldfish RHCA memoirs: CL210 experiment management it network - chapter
Leetcode71. Simplified Paths
金鱼哥RHCA回忆录:CL210管理OPENSTACK网络--章节实验
无需破解,官网安装Visual Studio 2013社区版