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.aesplitコマンドで分割すると、ファイル名は名前はaa~zzのようになるようです。
今回は行数毎に分割する方法を取りました。
簡単なコマンド説明。
split -l [行数] [元ファイル名] [分割後ファイル接頭語]
バイト数を指定して分割することも可能なようです。
詳細はリンク先のコマンド説明で閲覧可能です。
【 split 】 ファイルを分割する
«前の記事:エンジニアに嫌われる営業存在チェックINSERT文 重複行を挿入しない方法:次の記事»