linux大文件切割

【linux运维实战】大文件如何切割?

点击关注👉👉 浩道linux 2023-03-06 07:50 发表于广东
图片关注上方浩道linux,回复资料,即可获取海量linuxPython网络通信等学习资料!

前言

大家好,这里是浩道linux,主要给大家分享linuxpython网络通信相关的IT知识平台。

 

浩道linux
浩道,专注工作与实践的一名IT民工。本号主要分享linux,python,网络通信相关干货。相聚在此,通过分享知识与经验,一起成长。
161篇原创内容

 

今天浩道跟大家分享linux运维实战硬核干货,针对运维过程中常见的大文件是如何切割的?

 

 文章来源:

https://cloud.tencent.com/developer/article/1576576

 

日常工作中需要对日志文件进行分析,当日志文件过大时,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参数以数字的方式显示

 右边滑动查看完整命令

#源文件大小[root@VM_3_50_centos split]# 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
#按行切割[root@~]# split -l 50000 -d --verbose 2020011702-www.happylauliu.cn.gz split-line正在创建文件"split-line00"正在创建文件"split-line01"正在创建文件"split-line02"正在创建文件"split-line03"正在创建文件"split-line04"正在创建文件"split-line05"正在创建文件"split-line06"正在创建文件"split-line07"正在创建文件"split-line08"正在创建文件"split-line09"正在创建文件"split-line10"...正在创建文件"split-line9168"正在创建文件"split-line9169"正在创建文件"split-line9170"正在创建文件"split-line9171"
#查看切割文件行数确认[root@VM_3_50_centos split]# wc -l split-line0050000 split-line00[root@VM_3_50_centos split]# wc -l split-line0150000 split-line01[root@VM_3_50_centos split]# wc -l split-line917050000 split-line9170[root@VM_3_50_centos split]# wc -l split-line91711020 split-line9171
#查看文件大小[root@VM_3_50_centos split]# 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-line02-rw-r--r-- 1 root root 14M 1月 17 16:54 split-line03-rw-r--r-- 1 root root 14M 1月 17 16:54 split-line04-rw-r--r-- 1 root root 14M 1月 17 16:54 split-line05-rw-r--r-- 1 root root 14M 1月 17 16:54 split-line06-rw-r--r-- 1 root root 14M 1月 17 16:54 split-line07-rw-r--r-- 1 root root 14M 1月 17 16:54 split-line08-rw-r--r-- 1 root root 14M 1月 17 16:54 split-line09
指定行数后会自动做切割,即达到5000行之后自动切割,通过-d参数文件名会自动以数字的方式命名,切割后,每个文件大小为14M,此时再对文件进行分析将会方便边界很多,同时文件数量也会很多,可以增加行数的方式进行切割,方便分析。

 

2.2 根据大小切割

除了按照行数切割之外,split还支持通过文件大小进行切割,通过指定-b参数指定文件大小进行切割,文件大小单位支持K, M, G, T, P, E, Z,如下以切割为500M演示文件切割过程

 右边滑动查看完整命令

[root@~]# split -b 500M -d --verbose 2020011702-www.happylauliu.cn.gz split-size正在创建文件"split-size00"正在创建文件"split-size01"正在创建文件"split-size02"正在创建文件"split-size03"正在创建文件"split-size04"正在创建文件"split-size05"正在创建文件"split-size06"
[root@VM_3_50_centos split]# 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-rw-r--r-- 1 root root 500M 1月 17 17:04 split-size02-rw-r--r-- 1 root root 500M 1月 17 17:04 split-size03-rw-r--r-- 1 root root 500M 1月 17 17:04 split-size04-rw-r--r-- 1 root root 500M 1月 17 17:04 split-size05-rw-r--r-- 1 root root 444M 1月 17 17:04 split-size06

2.3 多文件合并

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

 右边滑动查看完整命令

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

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

 

 

更多精彩

关注公众号「浩道linux」

浩道linux,专注于linux系统的相关知识、网络通信、python相关知识以及涵盖IT行业相关技能的学习,理论与实战结合,真正让你在学习工作中真正去用到所学。同时也会分享一些面试经验,助你找到高薪offer,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~关注回复“资料”可免费获取学习资料(含有电子书籍、视频等)。

浩道linux
浩道,专注工作与实践的一名IT民工。本号主要分享linux,python,网络通信相关干货。相聚在此,通过分享知识与经验,一起成长。
161篇原创内容

喜欢的话,记得点“赞”“在看”图片

 

收录于合集 #linux学习
 265
上一篇这些实用的linux小技巧,我敢说90%的人没有用过!下一篇Linux Used内存到底哪里去了?
阅读 420
 
 
写下你的留言
精选留言
  • 有不少朋友问,windows下有没有打开大日志文件的工具,这里推荐logview这个工具,好用[抱拳][抱拳]
     
     
已无更多数据
 
posted @ 2023-03-15 20:14  往事已成昨天  阅读(100)  评论(0编辑  收藏  举报