脚本实现:
1. 周期性调用没啥说的,放到 crontab 里面就成。
2. 如果满足条件,移动到一个制定目录,否则不做任何操作。用条件判断 if then。
3. 在 if 条件里面如何获取文件大小,用变量获取 ls -l 输出信息,然后用 awk 对其进行切分处理,获取大小信息( 当然你也可以用 du 命令代替 ls )。
4. 在整个脚本当中要考虑:异常处理。比如CP的时候,目标空间不够了。
最简单的方法,zabbix自身的监控项就有对文件的监控,至于周期可以在监控项中自己定义,监控项键值可参考,如果没有匹配的,可考虑自定义定时任务脚本
vfs.dir.size[dir,,,,,] | 目录大小(bytes)。返回整数 |
vfs.file.cksum[file] | 文件效验,unix标准算法。返回整数 |
vfs.file.contents[file,] | 搜索文件内容。返回文本 |
vfs.file.exists[file,,] | Checks if file exists. Returns 0 - not found; 1 - file of the specified type exists |
vfs.file.md5sum[file] | 文件的MD5校验。返回字符串(该文件的MD5哈希值) |
vfs.file.regexp[file,regexp,,,,] | 查找文件中的字符串,返回内容是被匹配内容的整行字符串,或者其他可选参数 |
vfs.file.regmatch[file,regexp,,,] | 查找文件中的字符串,如果有则返回1,没有则返回0。 |
vfs.file.size[file] | 文件大小(单位bytes)。返回整数 |
vfs.file.time[file,] | 文件事件信息,返回的是时间戳 整数 |
我觉得可以尝试一下几种方法:
1.可以使用linux中的logrotate对文件容量进行分割,分割后的文件在转存。
2.使用监控工具Zabbix或者 Prometheus监控工具进行自动划配置,某个文件达到设定阈值后触发一个action。
3.使用shell脚本添加crontab任务定期对文件大小进行判断。