Руководство
Файлы ._ на телефоне Android и как от них избавиться
Скопируйте музыку или фото с Mac, и у каждого файла появится двойник, имя которого начинается с точки и подчёркивания. Они безвредны, не являются копиями, и избавиться от них легко.

Вы скопировали альбом с Mac на телефон или заполнили SD-карту в кардридере. Теперь музыкальный плеер показывает каждый трек дважды, один раз как Track 01.mp3 и второй как ._Track 01.mp3, и второй не воспроизводится. Галерея показывает серые квадраты. Файловый менеджер показывает файл на 4 KB рядом с каждым настоящим.
Это файлы AppleDouble. Их записал ваш Mac, и с телефоном всё в порядке.
Что такое файл ._
Файл на Mac несёт больше, чем своё содержимое. macOS прикрепляет к нему расширенные атрибуты: тег Finder, веб-адрес, откуда был скачан файл, флаг карантина, из-за которого Gatekeeper спрашивает «Вы действительно хотите открыть его?», а для некоторых старых файлов ещё и ветвь ресурсов. APFS, собственная файловая система Mac, хранит всё это внутри файловой системы, незаметно для вас.
FAT32 и exFAT не умеют хранить ничего из этого, а именно в этих форматах почти все SD-карты и флешки. Поэтому, когда macOS копирует на них файл, она кладёт атрибуты в отдельный файл рядом, с именем исходного файла и ._ впереди. Этот файл-спутник и есть файл AppleDouble. Обычно он занимает ровно 4 096 байт, каким бы ни был размер файла, которому он принадлежит.
На Mac, APFS
Скопирован на карту FAT32 или exFAT
На карте
Mac скрывает любой файл, имя которого начинается с точки, поэтому на Mac вы их никогда не видите. Android скрывает их в одних местах и не скрывает в других. Файловые менеджеры показывают их, если включить показ скрытых файлов, а музыкальные плееры и автомагнитолы, которые сами читают папки, часто пытаются их воспроизвести.
Как они попадают на телефон
| Как файлы туда попали | Остаются файлы ._ | Остаются файлы .DS_Store |
|---|---|---|
| SD-карта или флешка, заполненная на Mac | Да, по одному на файл | Да, в папках, открытых в Finder |
| Приложение для MTP, например Android File Transfer или OpenMTP | Нет, MTP передаёт только содержимое | Только если такой файл есть в копируемой папке |
| Телефон, смонтированный в Finder через SideMount | Нет, на телефоне они отклоняются | Нет, тоже отклоняются |
Обычно они приходят через кардридер. Заполните карту на Mac, вставьте её в телефон, и у каждого скопированного файла будет двойник. Папки, которые вы открывали в Finder, к тому же получают файл .DS_Store, где хранятся настройки вида окна.
Можно ли их удалять?
Да. Файл ._ хранит только метаданные Mac о соседнем файле, никогда не его содержимое, и на телефоне его ничто не читает. Удалив его, вы потеряете тег Finder или адрес загрузки, которыми когда-либо воспользовался бы только Mac.
Но посмотрите, прежде чем удалять. Настоящий файл тоже может начинаться с ._, хоть и редко, поэтому сначала выведите их список и проверьте, что он такой, как вы ожидаете.
Как их удалить
С SD-карты или флешки, на 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, те же два шага работают и с памятью телефона:
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 может читать и записывать теги файлов на телефоне, пока он смонтирован. Но теги не сохраняются: они исчезают, когда вы извлекаете телефон, а телефон всегда получает только файлы. Руководство по настройке описывает первое подключение, а в статье обо всех способах передать файлы между Android и Mac сравниваются пути.
Вопросы
Почему каждый файл ._ занимает 4 KB?
Файл AppleDouble состоит из небольшого заголовка с местом для атрибутов, и macOS записывает его одним блоком в 4 096 байт, каким бы ни был размер файла, которому он принадлежит. Файл с большой ветвью ресурсов может быть больше.
Повредит ли их удаление моим фото или музыке?
Нет. Фото или трек хранится в файле без ._ в начале имени. Файл-спутник содержит только метаданные Mac, например теги Finder, так что телефон и его приложения ничего не теряют.
Создаёт ли Android File Transfer файлы ._?
Нет. MTP, протокол, которым он пользуется, передаёт только содержимое каждого файла, так что класть в файл-спутник нечего. Файлы ._ появляются на картах и дисках, которые монтирует Mac. Правда, Google больше не предлагает Android File Transfer: смотрите, чем его заменить.
Сохраняются ли теги Finder на телефоне, смонтированном через SideMount?
Пока он смонтирован, да. Finder работает как обычно. После извлечения телефона они исчезают, потому что сам телефон их никогда не хранит.


