介绍

日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim、cat、vim、grep、awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在:

  • 执行速度缓慢,文件内容需要加载到内存中,涉及大量的磁盘读;
  • 耗费资源过多,一个4G空间的日志文件需要至少4G的内存,更大的呢?
  • 内容难以复用,分析过滤文件时会用管道对输出文件进行处理,大文件下难以复用;
  • 文件传输困难,大文件需要传输给其他人进行分析,文件太大,全量传输带宽耗费大。

1、查阅大文件之痛

大数据离线处理框架hadoop可以处理这些场景,然而hadoop也需要耗费较长的时间进行计算,而且还需要去编写MapReduce任务,诚然这种方法带来更大的难度和挑战。hadoop中是通过将大文件切割成多个小文件,通过多个mapreduce任务做并行处理,Linux提供了一个简单易用的split工具,可以实现将文件切割成多个小文件。

split提供两种方式对文件进行切割:

  • 根据行数切割,通过-l参数指定需要切割的行数
  • 根据大小切割,通过-b参数指定需要切割的大小

2.1 根据行数切割

如下以一个3.4G大小的日志文件做切割演示,每一个文件按照50000行做切割,指定文件名为split-line,-d参数以数字的方式显示

#源文件大小
# ls -l 2020011702-www.happylauliu.cn.gz -h
-rw-r--r-- 1 root root 3.4G 1月  17 09:42 2020011702-www.happylauliu.cn.gz#按行切割,50000行为一个文件
# split -l 50000 -d --verbose 2020011702-www.happylauliu.cn.gz split-line
正在创建文件"split-line00"
正在创建文件"split-line01"#查看切割文件行数确认
# wc -l split-line00
50000 split-line00#wc -l split-line01
50000 split-line01#wc -l split-line9170
50000 split-line9170# wc -l split-line9171
1020 split-line9171#查看文件大小
# ls -lh split-line0[0-9]
-rw-r--r-- 1 root root 14M 1月  17 16:54 split-line00
-rw-r--r-- 1 root root 14M 1月  17 16:54 split-line01-rw-r--r-- 1 root root 14M 1月  17 16:54 split-line09

指定行数后会自动做切割,即达到5000行之后自动切割,通过-d参数文件名会自动以数字的

2.2 根据大小切割

按照500M为一个文件,切割。
# split -b 500M -d --verbose 2020011702-www.happylauliu.cn.gz split-size
正在创建文件"split-size00"
正在创建文件"split-size01# ls -lh split-size0*
-rw-r--r-- 1 root root 500M 1月  17 17:03 split-size00
-rw-r--r-- 1 root root 500M 1月  17 17:03 split-size01

2.3 多文件合并

split是用户将大文件切割为多个小文件,如果需要将多个小文件合并为一个文件怎么处理呢?可以使用文件重定向方式实现,如下演示两个小文件合并为一个文件

# cat split-size01 split-size02 >two-file-merge# ls -lh two-file-merge
-rw-r--r-- 1 root root 1000M 1月  17 17:20 two-file-merge

合并方式通过读取文件的方式+输出重定向,对于大文件一样会存在性能的问题,建议根据需要使用。

参考链接 :

Linux运维实战|大文件切割 :https://mp.weixin.qq.com/s/33QKfPJTC3K5LR3s4jB58g

Linux运维实战|大文件切割相关推荐

  1. 《Linux运维实战:使用mongodump和mongorestore备份与恢复Mongodb数据》

    一.备份与恢复方案 mongodump是MongoDB官方提供的备份工具,它可以从MongoDB数据库读取数据,并生成BSON文件,mongodump适合用于备份和恢复数据量较小的MongoDB数据库 ...

  2. 《Linux运维实战:Centos7.6一键离线部署mongodb4.2.23副本集群》

    一.部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的mongodb针对不同的客户环境需要多次部署,作为一个运维工程师,提升工作效率也是工作中的重要一环.所以 ...

  3. 老男孩linux运维实战培训中心讲师介绍

    老男孩linux运维实战培训中心讲师介绍 老男孩,资深unix/Linux系统运维网站架构专家.高级运维总监.从事一线网站运维及系统架构管理10年以上,13年的教育教学培训经历(擅长教育心理,职业规划 ...

  4. 《Linux运维实战:使用openssl生成免费证书》

    文章目录 一.背景 二.生成证书 2.1.证书格式为cer 2.2.证书格式为pem 三.Nginx配置 四.安装客户端证书 总结:整理不易,如果对你有帮助,可否点赞关注一下? 一.背景 由于第三方外 ...

  5. Linux运维实战:CentOS7.6操作系统从入门到精通(11-15)

    第11章 重定向和文件的查找 第12章 磁盘介绍及管理 第13章 Linux文件系统结构 第14章 RAID的原理与搭建 第15章 LVM管理和SSM工具使用 Linux运维实战:CentOS7.6操 ...

  6. Linux运维实战:CentOS7.6操作系统从入门到精通(6-10)

    第6章 CentOS用户管理 第7章 CentOS 7 文件权限管理 第8章 CentOS 7 程序包的管理与安装 第9章 文件的归档和压缩 第10章 CentOS 7 系统进程管理 Linux运维实 ...

  7. 《Linux运维实战:使用Percona XtraBackup物理备份与恢复Mysql数据》

    一.Percona XtraBackup工具介绍 Percona XtraBackup是世界上唯一开源.免费的MySQL热备份软件,可为InnoDB和XtraDB数据库执行非阻塞备份.Percona ...

  8. 《Linux运维实战:Centos7.6基于ansible一键离线部署mongodb4.2.23容器版副本集群》

    一.部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 mongodb副本集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ans ...

  9. 《Linux运维实战:Nginx服务报错unknown directive stream》

    一.场景一 Ubuntu 18.04 LTS操作系统,安装完Nginx之后,由于业务需求,代理转发代理TCP stream {server {listen 9000;proxy_connect_tim ...

最新文章

  1. 深拷贝与浅拷贝~动态内存释放有关
  2. python不支持以下哪种数据类型_Python 不支持以下哪种数据类型?
  3. 开放封闭原则(OCP)
  4. VALVE SURVEY RESULTS
  5. 17 初探Context的使用场景
  6. 生活中java继承例子_简单继承例子:java
  7. 时空权衡在模式匹配算法中的应用(JAVA)--Horspool算法(简化版BM算法)
  8. quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm
  9. 2019-06-03 Java学习日记之多线程下GUI
  10. table里面用三目_三个方法快速找到SAP后台Table
  11. 收集bug开源框架_百度开源又一力作发布!炸了。。。
  12. java背包算法_背包算法java版
  13. 使用手册 煤矿风险管控系统_煤矿风险分级管控手册.doc
  14. “绿多多”公益+冠军链盟+关羽斩醛:良设板与“空间优造”的无醛与环保之路
  15. Android使用VideoView播放视频
  16. 个人理财有哪些基本原理和方法?——知乎李东旭
  17. 决斗小游戏代码html,《游戏王:决斗链接》的基础玩法介绍
  18. 获取设备唯一ID的几种方式
  19. 学习日语应该先掌握哪些内容?
  20. 基于FPGA的交通灯电路设计(含程序)

热门文章

  1. 有效ip地址_计算机等级考试详解:用IP地址及域名访问web网站的正确说法
  2. 计算机辅助项目管理有关论文,项目管理论文
  3. python中datetime函数怎么获得当年年份_Python 日期和时间函数使用指南
  4. FlexForAndroid:文件读写
  5. python 整数转字符串_16、atoi-整数字符串转整数-leetcode8-中等
  6. 一文带你了解 JVM 的垃圾回收机制
  7. 基于Spring中的事务管理机制
  8. Winscp使用sudo user登录
  9. Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405
  10. Android remote debug 打开手机应用里的网页却显示空白