動画やログ、バックアップデータなど、サイズが大きすぎるファイルを扱うときに「そのままではメールで送れない」「クラウドにアップできない」と困った経験はありませんか?
こうした場合は、ファイルを小さく分割して送信・保存し、必要に応じて結合して元に戻すのが便利です。
LinuxやmacOSのターミナルでは、split と cat というコマンドを使うことで、大きなファイルを効率的に分割・結合できます。
ファイルを分割する方法(split)
split コマンドを使えば、指定したサイズごとにファイルを分割できます。
split -b 100M bigfile.zip part_
-b 100M: 100MBごとに分割bigfile.zip: 分割対象のファイルpart_: 分割後のファイル名のプレフィックス(例: part_aa, part_ab …)
この例では、bigfile.zip が 100MB ごとの小さなファイルに分割され、part_aa、part_ab という形で保存されます。
行数で分割する場合
テキストファイルを行単位で分割することも可能です。
split -l 1000 logfile.txt log_
この場合、logfile.txt が 1000行ごとに log_aa、log_ab といったファイルに分割されます。
分割する個数を指定する場合
「サイズや行数ではなく、何個のファイルに分けるか」を先に決めたい場合は -n オプションを使います。
split -n 4 bigfile.zip part_
この場合、bigfile.zip のサイズを自動計算し、ちょうど4つのファイルに均等分割されます。送信先の容量が決まっていて「◯分割で送りたい」というときに便利です。
分割したファイルを結合する方法(cat)
分割したファイルを元に戻すときは cat コマンドを使います。
cat part_* > bigfile_restored.zip
part_*: 分割したファイルを順番に結合>: 出力を新しいファイルに保存bigfile_restored.zip: 復元後のファイル名
これで分割前と同じファイルが再構築されます。
実用シーン
- 大容量の動画を送るとき:メール添付の制限を回避
- クラウド保存:アップロード容量制限に合わせて分割
- バックアップ整理:サイズを指定して複数メディアに保存
- ログ管理:巨大なログを分割して扱いやすくする
この記事は「大きなファイルを分割して持ち運び、元に戻す」という目的別の手順をまとめています。split コマンド自体の構文やオプションの一覧は split|ファイルを一定サイズ・行数・分割数で分割する にまとめています。
用途別レシピ
FAT32のUSBメモリに収める(4GBの壁)
FAT32でフォーマットされたUSBメモリやSDカードは、1ファイル4GiB未満(4,294,967,295バイト)までしか保存できません。ここで注意したいのが split のサイズ単位です。GNU版の split では G はGiB(1024の3乗)を意味するため、-b 4G はちょうど 4,294,967,296 バイトとなり、1バイト超過して FAT32 に書き込めません。
# NG: 4GiB ちょうど = FAT32 の上限を1バイト超える
split -b 4G -d -a 3 backup.tar.gz "backup.tar.gz."
# OK: 余裕を持たせる
split -b 3G -d -a 3 backup.tar.gz "backup.tar.gz."
単位は K=1024/KB=1000 のように、2文字表記が10進です。手元の環境では次のように確認できます。
$ split -b 1K z.bin k. && stat -c%s k.aa
1024
$ split -b 1KB z.bin k. && stat -c%s k.aa
1000
個数を指定して等分する(-n)
1ファイルあたりのサイズではなく「何個に分けるか」を決めたい場合は -n を使います。-d で数値サフィックス、-a で桁数を揃えると、結合時の並び順で事故が起きません。
$ split -n 8 -d -a 3 big.bin "big.bin."
$ ls -1 big.bin.*
big.bin.000
big.bin.001
big.bin.002
big.bin.003
big.bin.004
big.bin.005
big.bin.006
big.bin.007
圧縮と分割を中間ファイルなしで直結する
ディレクトリを丸ごとバックアップして分割したい場合、tar の出力を split にパイプすると、巨大な中間ファイルを作らずに済みます。split の入力ファイル名を - にすると標準入力を読み取ります。
tar -czf - /data | split -b 3G -d -a 3 - "/backup/data.tar.gz."
復元は結合してから展開します。
cat /backup/data.tar.gz.* > data.tar.gz
tar -xzpf data.tar.gz -C /tmp/restore
結合前後でハッシュを検証する
分割ファイルを持ち運ぶ場合は、パーツごとのハッシュを残しておくと破損に気付けます。
# 分割直後:パーツのハッシュ一覧を作成
sha256sum big.bin.* > big.bin.parts.sha256
# 受け取り側:検証(壊れていれば FAILED と出る)
sha256sum -c big.bin.parts.sha256
結合後に元ファイルと完全一致するかは cmp で確認できます。差分がなければ何も出力されません。
cat big.bin.* > restored.bin
cmp big.bin restored.bin && echo "一致しました"
注意点
- 分割後にファイルをやり取りする場合、すべて揃わないと結合できません。
- 順番を間違えると正しく復元できないため、
part_aa→part_ab→part_ac… の順序を保ちましょう。 - 圧縮ファイルを分割する場合は、結合してから解凍する必要があります(zip・tar.gzの解凍方法はtgzを解凍する方法|tar.gzとの違いとWindows・macOS・Linuxでの開き方を参照)。
よくある質問(FAQ)
分割ファイルの名前を連番(数字)にするには?
デフォルトではpart_aaのようにアルファベット2文字の連番になりますが、-dオプションを付けると数字の連番(part_00、part_01…)にできます。
split -b 100M -d bigfile.zip part_
結合後のファイルが壊れていないか確認するには?
分割前・結合後それぞれのファイルのハッシュ値を比較すると、正しく復元できたか確認できます。ハッシュ値の計算・比較方法はmd5sum – MD5 ハッシュ値を計算・検証するコマンドで解説しています。
md5sum bigfile.zip
md5sum bigfile_restored.zip
2つの値が一致していれば、分割・結合の過程でデータが壊れていないことが確認できます。
分割したファイル数(何個に分かれるか)を先に知りたい場合は?
split自体に分割数を事前に表示する機能はありませんが、-bで指定したサイズと元ファイルのサイズから概算できます。正確な分割後の個数を確認したい場合は、実行後にls part_* | wc -lで生成されたファイル数を数えられます。あるいは、あらかじめ分割数を決めておきたい場合は前述の-nオプションを使うと確実です。
Windowsにはsplit・catコマンドがないが、どう分割・結合すればいい?
標準のコマンドプロンプトにはsplit相当のコマンドはありませんが、PowerShellであればGet-ContentとSet-Contentを組み合わせて行単位に分割できます。またWindows Subsystem for Linux(WSL)やGit Bashを使えば、本記事で紹介したsplit / catコマンドをそのまま利用できます。手軽さを優先するなら、7-ZipなどのGUI圧縮ツールで分割書庫を作成する方法もあります。
まとめ
大きなファイルを効率的に管理するには、split で分割し、必要なときに cat で結合する方法が便利です。
- サイズや行数で自由に分割できる
- 容量制限のある環境でも柔軟に対応可能
- 元に戻すのも簡単で安全
大容量ファイルで困っている方は、この方法を取り入れてみてください。

コメント