Linux下 分割日誌大文件
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
本文出自 “玥舞神” 博客,請務必保留此出處http://hui1943.blog.51cto.com/4195144/1967221
Linux下 分割日誌大文件