1. 程式人生 > >Linux下 分割日誌大文件

Linux下 分割日誌大文件

日誌 切分 分割

Linux下分割日誌有兩種常用命令

  1. dd

  2. 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





本文出自 “玥舞神” 博客,請務必保留此出處http://hui1943.blog.51cto.com/4195144/1967221

Linux下 分割日誌大文件