ガイド
Androidスマホの._ファイルと、それを防ぐ方法
Macから音楽や写真をコピーすると、すべてのファイルに、ドットとアンダースコアで始まる分身が現れます。害はなく、コピーでもなく、簡単に取り除けます。
Macからスマホにアルバムをコピーした、あるいはカードリーダーでSDカードにファイルを入れた。すると音楽プレーヤーでどの曲も2回表示されるようになりました。Track 01.mp3と._Track 01.mp3で、2つ目は再生できません。ギャラリーには灰色の四角が並び、ファイルマネージャーでは本物のファイルの横に、どれも4 KBのファイルがあります。
それはAppleDoubleファイルです。書き込んだのはMacで、スマホには何の問題もありません。
._ファイルとは
Mac上のファイルは、中身以上のものを持っています。macOSはファイルに拡張属性を付けます。Finderのタグ、ダウンロード元のWebアドレス、Gatekeeperの「開いてもよろしいですか?」の確認のもとになる隔離フラグ、そして一部の古いファイルではリソースフォークです。Mac自身のファイルシステムであるAPFSは、これらをすべてファイルシステムの中に、見えないように保存します。
FAT32とexFATはこれを一切保存できず、ほぼすべてのSDカードとUSBメモリはこのどちらかの形式です。そのためmacOSは、これらにファイルをコピーするとき、属性を別のファイルにして横に置き、元の名前の先頭に._を付けた名前にします。この添えファイルがAppleDoubleファイルです。対応するファイルの大きさにかかわらず、たいていはちょうど4,096バイトです。
Macは名前がドットで始まるファイルを隠すので、Macでは見えません。Androidでは、隠れる場所と隠れない場所があります。ファイルマネージャーは隠しファイルを表示する設定にすると一覧に出しますし、自分でフォルダを読む音楽プレーヤーやカーステレオは、これを再生しようとすることがよくあります。
スマホに届く経路
| ファイルの入れ方 | ._ファイルが残る | .DS_Storeファイルが残る |
|---|---|---|
| MacでSDカードやUSBメモリに入れた | 残る(ファイルごとに1つ) | 残る(Finderで開いたフォルダに) |
| Android File TransferやOpenMTPなどのMTPアプリ | 残らない(MTPは中身だけを送る) | コピーするフォルダにある場合だけ |
| SideMountでFinderにマウントしたスマホ | 残らない(スマホ上で拒否) | 残らない(これも拒否) |
いちばん多い原因はカードリーダーです。Macでカードにファイルを入れてスマホに挿すと、コピーしたすべてのファイルに分身ができています。Finderで開いたフォルダには.DS_Storeファイルもでき、ウインドウの表示設定が保存されます。
削除しても大丈夫?
大丈夫です。._ファイルに入っているのは、隣にあるファイルについてのMacのメタデータだけで、ファイルの中身は入っていません。スマホ上でこれを読むものもありません。削除して失われるのは、Finderのタグやダウンロード元のアドレスで、使うのはMacだけです。
ただし、削除する前に確かめてください。まれに、本物のファイルが._で始まることもあります。先に一覧を出し、思ったとおりの内容か確認しましょう。
削除する方法
SDカードやUSBメモリから、Macで
カードをマウントした状態でターミナルを開き、一覧を出します。CARDはカードの名前に置き換えてください。
find /Volumes/CARD -name '._*' -type f
一覧に問題がなければ、削除します。
find /Volumes/CARD -name '._*' -type f -delete
macOSには、このための専用のツールdot_cleanもあります。dot_clean -m /Volumes/CARDと実行すると、戻せるものはファイルに統合してから、すべての._ファイルを削除します。
スマホ自体から
USB デバッグがオンでadbがインストールされていれば、同じ2つの手順をスマホのストレージに使えます。
adb shell find /sdcard -name '._*' -type f
adb shell find /sdcard -name '._*' -type f -delete
コンピュータがなくても、スマホのファイルマネージャーで隠しファイルを表示すれば、手で削除できます。._で検索すれば、すべて見つかります。
もう出てこないようにする方法
macOSがFATやexFATのカードに._ファイルを書き込むのを止める設定はありません。変えられるのは、何をコピーするか、どうコピーするかです。
- 属性なしでコピーする。ターミナルで
cp -Xを使うと、拡張属性なしでファイルをコピーするので、添えファイルに入れるものがなくなります。Finderは必ず属性ごとコピーします。 - 先に取り除く。
xattr -cr ~/Music/Albumで、コピーする前にフォルダからすべての拡張属性を取り除けます。ファイル自体は変わりません。 - カードではなくケーブルでコピーする。MTPアプリは各ファイルの中身だけを送ります。SideMountはスマホをFinderにマウントし、スマホ上で
._と.DS_Storeのファイルを拒否するので、Finderでコピーしてもきれいなまま届きます。
SideMountでマウントしているあいだも、Finderはスマホ上のファイルのタグを読み書きできます。属性はMacのメモリに保持され、スマホを取り出すと破棄されます。スマホが受け取るのは、いつもファイルだけです。最初の接続はセットアップガイドで説明しています。方法の比較はAndroidとMacのあいだでファイルを移すすべての方法をご覧ください。
よくある質問
._ファイルがどれも4 KBなのはなぜですか?
AppleDoubleファイルは、属性を入れる余地のある小さなヘッダで、macOSは対応するファイルの大きさにかかわらず、これを4,096バイトの1ブロックとして書き込みます。大きなリソースフォークを持つものは、もっと大きくなることもあります。
削除すると写真や音楽が壊れますか?
壊れません。写真や曲そのものは、先頭に._が付いていないほうのファイルです。添えファイルにはFinderのタグなどのMacのメタデータしか入っていないので、スマホとそのアプリは何も失いません。
Android File Transferは._ファイルを作りますか?
作りません。Android File Transferが使うプロトコルMTPは各ファイルの中身だけを送るので、添えファイルに入れるものがありません。._ファイルは、Macがマウントしたカードやドライブから来ます。なお、GoogleはもうAndroid File Transferを提供していません。代わりになるものをご覧ください。
SideMountでマウントしたスマホに、Finderのタグは残りますか?
マウントしているあいだは残ります。SideMountはタグなどの属性をMacのメモリに保持するので、Finderはいつもどおりに使えます。スマホ自体は保存しないので、スマホを取り出すとタグは消えます。