年々サーバのメモリサイズが大きくなって、DumpやCoreを取得すると何十GBとかになってしまいます。
サポートに送りつけるにも大きすぎたりするので、障害対応とかのときに使ってます。
- 目次 -
基本的な使い方
大容量のファイルを分割します。
分割方法はオプションで分割方法を指定します。
なにも指定しないと1000行単位で、「xaa」「xab」…の順でファイルが生成されます。
実行例:
$ split
longfile.txt
$ l
s -lh
-rw-rw-r--. 1 user group 70464 1月 5 13:42
longfile.txt
-rw-rw-r--. 1 user group 28922 1月 5 13:47 xaa
-rw-rw-r--. 1 user group 30121 1月 5 13:47 xab
-rw-rw-r--. 1 user group 11421 1月 5 13:47 xac
$ wc -l*
longfile.txt
2251
longfile.txt
1000aa
x
1000ab
x
251 xac
主なオプション
オプション | 説明 |
---|---|
-b SIZE [K|M|G] | 指定したバイト単位で分割(キロ(K)、メガ(M)、ギガ(G)単位指定も可能) |
-l NUM | 指定した行数ごとに分割 |
-d | 数字の接尾辞を使用 (00 , 01 , …) |
-n NUM | 指定した数に分割 |
-b : バイト単位で分割
指定したバイトサイズごとにファイルを分割できます。
実行例:
$ split -b 10M largefile.txt small_
largefile.txt
を 10MB ごと に分割し、small_
という接頭辞を付けたファイル(small_aa
, small_ab
, …)として出力します。
$ l
s -lh
-rw-rw-r--. 1 user group 45M 1月 5 13:30largefile.txt
-rw-rw-r--. 1 user group 10M 1月 5 13:38aa
small_
-rw-rw-r--. 1 user group 10M 1月 5 13:38ab
small_
-rw-rw-r--. 1 user group 10M 1月 5 13:38ac
small_
-rw-rw-r--. 1 user group 10M 1月 5 13:38ad
small_
-rw-rw-r--. 1 user group 5M 1月 5 13:38ae
small_
-l : 行単位で分割
指定した行数ごとに分割できます。
実行例:
$ split -l 100 longfile.txt part_
largefile.txt
を 100 行ごと に分割し、part_
という接頭辞を付けたファイル(part_aa
, part_ab
, …)として出力します。
$ l
s -l
-rw-rw-r--. 1 user group 7045 1月 5 13:42
longfile.txt
-rw-rw-r--. 1 user group 2001 1月 5 13:47aa
part_
-rw-rw-r--. 1 user group 2612 1月 5 13:47ab
part_
-rw-rw-r--. 1 user group 1451 1月 5 13:47ac
part_
-rw-rw-r--. 1 user group 981 1月 5 13:47ad
part_
$ wc -l
longfile.txt
342
longfile.txt
$ wc -l part_*
100 part_aa
100 part_ab
100 part_ac
42 part_ad
数字のサフィックスを使う
デフォルトでは aa, ab, ac, ...
のようなアルファベットの接尾辞が付きますが、-d
オプションを使うと 数字 にできます。
実行例:
$ split -l 100 -d longfile.txt part_
500 行ごとに
,
01part_
2,
0part_
3, … というファイルを作成します。
0part_
$ l
s -l
-rw-rw-r--. 1 user group 7046 1月 5 13:42
longfile.txt
-rw-rw-r--. 1 user group 2002 1月 5 13:4701
part_
-rw-rw-r--. 1 user group 2612 1月 5 13:4702
part_
-rw-rw-r--. 1 user group 1451 1月 5 13:4703
part_
-rw-rw-r--. 1 user group 981 1月 5 13:4704
part_
$ wc -l
longfile.txt
342
longfile.txt
$ wc -l part_*
100 part_01
100 part_02
100 part_03
42 part_04
ファイルを一定の数に分割
-n
オプションを使うと、ファイルを等サイズに 指定した数 に分割できます。
実行例:
$ split -n 5 longfile.txt
part_
largefile.txt
を 5 分割 し、chunk_aa
, chunk_ab
, … というファイルとして出力します。
$ l
s -l
-rw-rw-r--. 1 user group 7045 1月 5 13:42
longfile.txt
-rw-rw-r--. 1 user group 1409 1月 5 13:47aa
part_
-rw-rw-r--. 1 user group 1409 1月 5 13:47ab
part_
-rw-rw-r--. 1 user group 1409 1月 5 13:47ac
part_
-rw-rw-r--. 1 user group 1409 1月 5 13:47ad
part_
-rw-rw-r--. 1 user group 1409 1月 5 13:47ae
part_
圧縮ファイルを分割
例えば、大きなログファイルを圧縮して分割する場合、以下のように使えます。
実行例:
$ gzip -c largefile2.txt | split -b 5M - largefile2.gz_
この場合、largefile2.txt
を gzip
で圧縮しながら 5MB ごと に largefile2.gz_aa
, largefile2.gz_ab
, … として保存します。
$ l
s -lh
-rw-rw-r--. 1 user group 1.1G 1月 5 13:42largefile2.txt
-rw-rw-r--. 1 user group 5M 1月 5 13:47largefile2.gz_
aa
-rw-rw-r--. 1 user group 5M 1月 5 13:47largefile2.gz_
ab
-rw-rw-r--. 1 user group 1M 1月 5 13:47largefile2.gz_
ac
分割したファイルを結合する
分割したファイルは cat
コマンドで元に戻せます。
実行例:
cat small_* > mergedfile.txt
圧縮ファイルの場合:
cat largefile.gz_* | gunzip > originalfile.txt
実用例
- 外部保存やファイルシステム制限
USB の容量制限や、ファイルシステムの制限(例: FAT32 の 4GB 制限)対策。 - ログ解析
長大なログファイルを分割して並列処理など。 - データの転送
大きなファイルを小さく分割し、分割したデータを複数回に分けて転送する場合。

コメント