コピーが途中で失敗するのはファイルシステムの制限が原因
外付けUSBメモリや外付けHDDへのコピー中に処理が止まり、次のようなエラーが表示された場合、ファイルサイズの上限に引っかかっている可能性があります。
cp: error writing '/mnt/usb/backup.tar.gz': File too large
「File too large」というメッセージが出たときは、コピー先のファイルシステムがFAT32である可能性が高いです。FAT32は1ファイルあたりのサイズが4GiB(正確には4,294,967,295バイト=約4GB)を超えると書き込めない仕様になっています。
なお、「No space left on device」と表示されるときはディスクの空き容量不足が原因です。見た目は似ていますが原因が異なるため、エラーメッセージをよく確認してください。また「Input/output error」が出るケースはハードウェアの問題が疑われるため、後述の「よくあるつまずき」も参照してください。
外付けディスクのファイルシステムを確認する
本当にFAT32が原因かどうかは、ファイルシステムを確認してから判断します。次のコマンドで確認できます。
lsblk -f
出力例(抜粋):
NAME FSTYPE LABEL UUID MOUNTPOINTS
sdb
└─sdb1 vfat MY_DRIVE 1234-ABCD /mnt/usb
FSTYPEの欄がvfatと表示されていれば、そのパーティションはFAT32(またはFAT16)です。exfatやntfsであれば、ファイルサイズの制限は実用上ほぼないため、コピーが失敗する原因は別のところにあります。
lsblkが使えない環境では、df -Tでもファイルシステムを確認できます。
df -T /mnt/usb
「Type」列がvfatであれば、やはりFAT32です。
分割か形式変更か、状況で使い分ける
FAT32であることが確認できたら、次の2つの対処法から状況に合わせて選びます。
- ファイルを分割してコピーする:ディスクの形式を変えずに済むため、既存のデータを消さずに対処できます。WindowsやBDレコーダー・テレビなど、FAT32しか読めない機器との互換性をそのまま保てます。ただしコピー先でファイルを元に戻す手順が1ステップ増えます。
- 外付けディスクを別の形式に変更する:フォーマットし直す必要があり、ディスク上のデータは消えます。変更後はファイルサイズの制限がほぼなくなるため、以降は分割・結合の手間がかかりません。
次のような状況では分割を選ぶのが無難です。
- 外付けディスクをWindowsや古い機器でも使っており、FAT32以外では読めない
- ディスク上に既存のデータがあり、すぐにフォーマットしたくない
- 一時的な作業のためだけに対処したい
次のような状況では形式変更が長期的な解決になります。
- LinuxとWindowsの間で大容量ファイルをやり取りすることが多い(exFATが適しています)
- 外付けディスクをLinux専用で使う(ext4が使えます)
- 毎回分割・結合するのが手間になってきた
ファイルを分割してコピーする手順
Linuxにはsplitコマンドが標準で用意されています。-bオプションで1つあたりの分割サイズを指定します。次の例ではlargefile.isoを3GBずつに分割して外付けディスクへコピーします。
split -b 3G largefile.iso /mnt/usb/largefile.iso.
コマンド末尾のピリオドは出力ファイル名のプレフィックスです。実行すると/mnt/usb/以下にlargefile.iso.aa、largefile.iso.ab……という名前で分割ファイルが作成されます。
分割ファイルを元に戻すにはcatコマンドを使います。
cat /mnt/usb/largefile.iso.* > restored_largefile.iso
正しく結合できたかどうかは、ハッシュ値を比較すると確認できます。元のファイルと結合後のファイルで同じ値が出れば、内容は一致しています。
sha256sum largefile.iso
sha256sum restored_largefile.iso
形式変更を選ぶ場合に知っておきたいこと
外付けディスクを別のファイルシステムに変更する場合、フォーマット前にディスク上のデータを別の場所へバックアップしてください。フォーマットはディスク上のすべてのデータを消去します。
どのファイルシステムを選ぶかは用途によって異なります。
- exFAT:LinuxとWindows・macOS間でファイルをやり取りする用途に向いています。現代の主要OSはほぼ標準でexFATをサポートしており、ファイルサイズの制限も実用上問題ありません。クロスプラットフォームで使う外付けディスクには最初の候補になります。
- NTFS:Windowsとの互換性が非常に高いですが、LinuxからNTFSへの書き込みには
ntfs-3gなどのドライバが別途必要になるディストリビューションもあります。 - ext4:Linux専用で使うならパフォーマンスや安定性の面で優れた選択肢ですが、WindowsやmacOSでは標準では読み書きできません。
フォーマット自体はmkfs系コマンドで行えます。ただしデバイス名(/dev/sdb1など)を誤ると意図しないディスクのデータを消してしまいます。実行前にlsblkやfdisk -lでデバイス名を慎重に確認してください。
よくあるつまずき
分割ファイルの結合順序がずれる
cat largefile.iso.* > restored.isoのようにワイルドカードを使うと、ファイル名の辞書順に結合されます。splitが生成するサフィックス(aa、ab……)はアルファベット昇順になっているため、通常は問題ありません。ただし分割後にファイルを手動でリネームした場合は順序が変わる可能性があるため注意してください。
exFATへの書き込みでエラーになる
古めのLinuxディストリビューションでは、exFATのカーネルモジュールが標準で入っていないことがあります。次のコマンドでモジュールの有無を確認できます。
modinfo exfat
「Module exfat not found」と表示された場合は、ディストリビューションのパッケージをインストールすることで対応できます。Debianや Ubuntuならexfat-fuseまたはexfatprogs、RHELやAlmaLinuxならexfatprogsが対象パッケージです。
「File too large」ではなく「Input/output error」が出る
「Input/output error」はファイルシステムの制限ではなく、ハードウェアの問題(ディスクの故障・USBケーブルの接触不良など)が原因のことがあります。別のUSBポートやケーブルを試してみたり、同じファイルを別の外付けデバイスにコピーして再現するかどうかを確かめると、原因の切り分けに役立ちます。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
