Linux下分割日志有两种常用命令
- dd
- split(推荐使用)
1.dd:
作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
参数注释:
if=filename:输入的文件名
of=finename:输出的文件名
bs=bytes:一次读写的字节数,默认是512bytes
skip=blocks:拷贝前,跳过的输入文件的前blocks块,块的大小有bs决定
count=blocks:只拷贝输入文件的前blocks块
比如
现在有一个文件file,大小为116616字节:
[root]# du -b file 116616 file
将其分割为两文件file1和file2,那我们就设置每块为1024字节,将file的前60块放入file1,余下的放入file2:
[root]# dd if=file bs=1024 count=60 skip=0 of=file1 [root]# dd if=file bs=1024 count=60 skip=60 of=file2
这样就实现了 大文件分割
2.split
这种作为日志分割更为常用
语 法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
参 数:
-<行数>或-l<行数> 指定每多少行就要切成一个小文件。
-b<字节> 指定每多少字就要切成一个小文件。支持单位:m,k
-C<字节> 与-b参数类似,但切割时尽量维持每行的完整性。
--help 显示帮助。
--version 显示版本信息。
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
使用例子:
[[email protected] split]# split -b 100m 1111.log (//按照字节分隔,每100mb分割一个文件) [[email protected] split]# split -l 1000000 1111.log(//按照行数分隔,每100w行做一次分割)
再比如:
先生成100kb大小的文件
[[email protected] split]# dd if=/dev/zero bs=100k count=1 of=date.file 1+0 records in 1+0 records out 102400 bytes (102 kB) copied, 0.00043 seconds, 238 MB/s
使用split命令将上面创建的date.file文件分割成大小为10KB的小文件:
[[email protected] split]# split -b 10k date.file
生成的效果如下
[[email protected] split]# ls date.file xaa xab xac xad xae xaf xag xah xai xaj
文件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度。同时还可以为分割后的文件指定文件名的前缀:
[[email protected] split]# split -b 10k date.file -d -a 3 split_file [[email protected] split]# ls date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009
时间: 2024-12-28 11:36:54