ガイド
Android File Transferと4 GBの壁
小さなファイルはコピーできるのに、長い動画だけが失敗する。Android File Transferは4 GBを超えるファイルを一度も移せませんでしたし、FAT32のSDカードにも独自の4 GB制限があります。その理由と、代わりに使える方法を紹介します。
GoogleがAndroidスマホ向けに出していた古いMacアプリ、Android File Transferは、4 GBより大きなファイルをコピーできません。それより小さなものは移せますが、長い4K動画、映画、ディスクイメージ、バックアップのアーカイブは失敗します。Googleはこの制限を説明しませんでした。考えられる原因は、このアプリが使っていたプロトコルMTPの32ビットのサイズ欄です。MTPやadbを使うほかのツールに、この制限はありません。
回避するには、別のツールを使います。大きなファイルを扱えるMTPアプリ、adb、あるいはFinderにマウントしたスマホです。ただし、どのツールでも解決できないケースが1つあります。ファイルの行き先がFAT32でフォーマットされたSDカードなら、カード自体が4 GB以上のファイルを保存できません。
見分け方
- 1つのファイルだけが失敗し、ほかはコピーされる。動画クリップのフォルダをコピーすると、いちばん大きなもの以外はすべて移ります。
- サイズが境目をわずかに超えている。制限は4 GiB、つまり4,294,967,296バイトです。Finderは1000単位で数えるので、これを4.29 GBと表示します。Finderで4.2 GBと表示されるファイルは制限内で、4.3 GBなら制限を超えています。
- Android File Transferか、カードで起きる。同じファイルでも、ほかのツールなら移せます。ただし行き先がFAT32のSDカードなら、何を使っても拒否されます。
GoogleはAndroid File Transferの提供を終了しています。以前のページは今ではWindowsユーザー向けにQuick Shareを案内していて、そのMac版はありません。まだこのアプリを持っているなら、この制限も乗り換える理由の1つです。選択肢はAndroid File Transferの代わりになるもので紹介しています。
制限がある理由
MTPは、スマホ上のファイルを1つずつ、ObjectInfoデータセットという小さなレコードで記述します。このレコードには、ファイルの名前、形式、親フォルダ、サイズが入ります。サイズ欄の「Object Compressed Size」は、符号なしの32ビットの数値です。入れられる最大の値は4,294,967,295で、4 GiBにちょうど1バイト足りません。
MTPは、大きなファイルのために対策を追加する必要がありました。ファイルがこの欄に収まらないほど大きい場合は、欄に許される最大の値0xFFFFFFFFを入れ、本当のサイズは別の64ビットのプロパティ「Object Size」に入れます。コンピュータはこれを別のリクエストで問い合わせる必要があります。Android自身のMTPのコードも同じように説明しています。オブジェクトのレコードにあるサイズは32ビットで、4 GBを超えるものは別の操作で取得するプロパティから得る、というものです。
32ビットの欄しか読まないツールや、スマホにコピーするときに64ビットの値を送らないツールは、4 GBを超えるファイルを扱えません。Android File Transferの動きは、まさにそうしたツールと同じです。Googleがそう明言したことはないので、これは文書で裏付けられた説明ではなく、考えられる説明です。MTPの仕組みについてはMTPのしくみでくわしく説明しています。
FAT32のSDカードには独自の4 GB制限がある
FAT32も各ファイルのサイズを32ビットで保存するので、FAT32のカードには4 GiBに達するファイルを置けません。これはカードのフォーマットの性質で、ケーブルやアプリの問題ではありません。AndroidのMTPのコードは、何かを移す前にこれを確かめます。FAT32のカードのように、行き先のストレージに最大ファイルサイズがある場合、スマホは4 GB以上のファイルを大きすぎるとして拒否します。
exFATはサイズを64ビットで保存するので、こうした制限はありません。両方の形式に対応したスマホで、標準のAndroidが自分でカードをフォーマットする場合、約32 GBまでのカードにはFAT32を、それより大きなカードにはexFATを選びます。つまり、容量の小さなカードほどFAT32である可能性が高くなります。
確かめるには、カードリーダーでカードをMacに挿し、ディスクユーティリティで見るか、Finderでカードを選択してファイル > 情報を見るを選びます。FAT32はMS-DOS (FAT32)と表示されます。変更するにはカードをフォーマットする必要があり、中身はすべて消えるので、先にすべてコピーしておいてください。MacでexFATにフォーマットした場合は、データを入れる前にスマホがカードを読めるか確かめてください。カードについてはAndroidのSDカードをMacで使うにくわしく書いています。カードリーダーでカードにファイルを入れると、Macはカードに._ファイルも残します。
回避する方法
| ツール | 4 GBを超えるファイル | スマホ側で必要なこと | 作業する場所 |
|---|---|---|---|
| Android File Transfer | 不可 | ファイル転送モード | 専用のウインドウ。Googleはすでに提供を終了 |
| OpenMTP | 可能 | ファイル転送モード | 専用の2ペインのウインドウ |
| adbのpushとpull | 可能 | USB デバッグ | ターミナル |
| SideMount | 可能 | USB デバッグ | Finderと、Macのすべてのアプリ |
| ファイルを分割する | 可能(あとで結合する分割ファイルとして) | 使うツールが必要とするもの | ターミナルまたはアーカイブアプリ |
大きなファイルを扱えるMTPアプリ
OpenMTPは無料のオープンソースで、Android File Transferと同じファイル転送モードのスマホで動き、4 GBを超えるファイルを転送できるとはっきり書いています。Macとスマホを、専用のウインドウの2つのペインに表示します。USB デバッグを絶対にオンにしたくないなら、これがいちばん近い代わりです。
adb
adb(Android Debug Bridge)は、どんなサイズのファイルでもコピーできます。GoogleのPlatform-Toolsをインストールし、USB デバッグをオンにして(USB デバッグをオンにする方法)、スマホでMacを許可し、ターミナルからコピーします。
adb pull /sdcard/DCIM/Camera/VID_20261016_101500.mp4 ~/Movies/
adb push ~/Movies/film.mkv /sdcard/Movies/
上のファイル名は例です。実際の名前はadb shell ls /sdcard/DCIM/Cameraで一覧できます。USB デバッグで何が許可されるか、それをどう取り消すかはadbとMTPの違いで説明しています。
Finderでスマホを使う
SideMountはケーブル越しに自分でadbを話し、スマホをFinderのボリュームとしてマウントします。そのため、大きなファイルもFinderでふつうにコピーするだけで、ほかのアプリも先にコピーせずにスマホ上のファイルを開けます。4 GBの制限はありません。テストに使っているファイルの1つは4.5 GBの動画です。macOS 26以降とUSB デバッグが必要で、どちらもセットアップガイドで説明しています。
ファイルを分割する
制限のあるツールしか使えない場合は、ファイルを4 GB未満の部分に分けてコピーし、向こう側で結合します。Macのターミナルでは次のようにします。
split -b 3900m film.mkv film.mkv.part-
cat film.mkv.part-* > film.mkv
1行目で分割ファイルを作り、2行目でそれを結合します。スマホ側で結合するにはそれができるアプリが必要で、結合したファイルを置くには、それを保存できるストレージが必要です。FAT32のカードでは無理です。この方法でも移せますが、選択肢の中ではいちばん手間がかかります。
よくある質問
4 GBの制限はAndroidにあるのですか、それともMacのアプリにあるのですか?
わかるかぎりでは、Android File Transferのほうです。AndroidのMTPは、スマホの内部ストレージへもっと大きなファイルを運べますし、OpenMTP、adb、SideMountといったほかのMacのツールはそうしたファイルをコピーできます。例外はFAT32のSDカードで、どのツールを使っても4 GB以上のファイルは保存できません。
なぜGoogleは4 GBに制限したのですか?
Googleは理由を明らかにしていません。考えられるのは、MTPのオブジェクトのレコードです。ファイルのサイズを32ビットの欄に保存していて、その上限は4 GiBのわずかに手前です。それより大きなサイズには別の64ビットのプロパティが必要ですが、このアプリはそれを一度も使わなかったようです。
ほかのアプリを使っても、大きなファイルをSDカードにコピーできないのはなぜですか?
カードがFAT32でフォーマットされている可能性が高いです。FAT32は4 GiB以上のファイルを保存できません。どのアプリから送っても、スマホはそのファイルを拒否します。代わりに内部ストレージにコピーするか、カードの中身をバックアップしてからexFATで再フォーマットしてください。
exFATにファイルサイズの制限はありますか?
実際に出会うような制限はありません。exFATはファイルサイズを64ビットで保存します。標準のAndroidは、約32 GBより大きなカードをフォーマットするときにexFATを使い、それより小さなカードにはFAT32を使います。