linux

Linuxで重いファイルを分割する方法



ファイルが重くて開けない、開くのに時間が掛る時のLinuxでの対処方法。

バグの発生原因を追うためにログファイルを解析することになったのですが、ファイルが2G・・・(´・ω・`)
Viで開こうにもとても時間が掛かり過ぎので対処方法としてファイルを分割することにしました。

ファイルサイズ確認

以下のコマンドで対象のファイルサイズを確認します。
ll -h access.log
結果は2.2G
-rw-r--r-- 1 root root 2.2G 4月 26 22:45 access.log

行数を知る

分割時に行数で分けるので現在のファイルの行数を分割する前に分割対象のファイルの行数を計ります。
wc -l access.log
結果は224万152行。
2240152 access.log

ファイルを分割する

分割するコマンドを実行
split -l 500000 access.log access.log.
結果を表示
ll access.log.*
-rw-rw-r-- 1 root root 5042812 4月 26 23:05 access.log.aa
-rw-rw-r-- 1 root root 5126874 4月 26 23:05 access.log.ab
-rw-rw-r-- 1 root root 5266974 4月 26 23:05 access.log.ac
-rw-rw-r-- 1 root root 4952354 4月 26 23:05 access.log.ad
-rw-rw-r-- 1 root root 2452415 4月 26 23:05 access.log.ae
splitコマンドで分割すると、ファイル名は名前はaa~zzのようになるようです。

今回は行数毎に分割する方法を取りました。
簡単なコマンド説明。
split -l [行数] [元ファイル名] [分割後ファイル接頭語]

バイト数を指定して分割することも可能なようです。
詳細はリンク先のコマンド説明で閲覧可能です。
【 split 】 ファイルを分割する


コメントを残す