DEV Community

WildTuna
WildTuna

Posted on

MacOS: Внешние диски и APFS (format external ssd drive in APFS)

Если вы пользователь MacOS, то скорее всего сталкивались с подключением внешних дисков. Как вы уже знаете система монтирует их в /Volumes/*. Система MacOS устроена таким образом, что она создает разные скрытые файлы с метаданными всех файлов и директорий. В APFS это как правило .DS_Store и еще несколько директорий для корзины и Spotlight. Если же мы говорим о других файловых системах, с которыми могут работать и другие операционные системы (ExFat, NTFS), то MacOS создает гораздо больше файлов. Сразу могут броситься файлы, которые начинаются на ._ (dot underscore) - это и есть метаданные по файлам и директориям, которые использует MacOS. Помимо внешних дисков файлы .DS_Store создаются и на сетевых дисках.

Для отключения создания .DS_Store файлов на сетевых дисках в MacOS предусмотрена специальная директива. Выполните эту команду в терминале, чтобы .DS_Store файлы не создавались на сетевых дисках:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
Enter fullscreen mode Exit fullscreen mode

Для новых версиях MacOS появилас аналогичная директива и для USB дисков:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
Enter fullscreen mode Exit fullscreen mode

Также нужно отключить индексирование внешнего диска:

sudo mdutil -i off /Volumes/<DISK NAME>
Enter fullscreen mode Exit fullscreen mode

Важный момент, если пользователей несколько, то выполнять эти команды нужно под каждым из них.

К сожалению запретить создание файлов ._ нельзя. Эти файлы очень мешают при работе с Git и Docker. Единственное, что можно сделать - это удалить их вручную командой в терминале dot_clean -n <dirname>, где <dirname> - это директория, в которой нужно удалить начинающиеся с ._ файлы. Для рекурсивного удаление в текущей директории и всех поддиректориях используйте команду

dot_clean -n .
Enter fullscreen mode Exit fullscreen mode

Но есть и хорошая новость! Эти файлы создаются только на файловых системах, отличных от Apple-овских. Поэтому, если отформатировать диск в MacOS Extended или APFS проблема с ._ (dot underscore) пропадет.

Для того, чтобы переформатировать жесткий диск нам понадобится "Дисковая утилита". В левом меню выбираем нужный диск, в быстром меню (правая кнопка мыши) выбираем "Стереть..." и в открывшемся окне выбираем нужную файловую систему. На рисунке ниже отображено окно форматирования подключенного по USB SSD диска.

Image description

Но где же заветная APFS? Все дело в том, что большинство дисков, которые продаются используют разметку MBR, которая не совместима с APFS. Для форматирования диска в APFS у него должна быть разметка GPT (иногда ее называют GUID). Сделать этого в GUI версии "Дисковой утилиты" не получится. Обратимся к консольной. Для этого в терминале нужно выполнить последовательность действий ниже.

Смотрим под каким номером примонтирован интересующий нас диск. Для этого выполним команду diskutil list

Image description

На рисунке выше мы видим результат выполнения этой команды. Интересующий нас диск я выделил красным. Он примонтирован как /dev/disk2 - это понадобится для команды форматирования.

Собственно для форматирования диска в APFS нужно выполнить эту команду:

diskutil partitionDisk <disk number> 1 GPT APFS <disk name> R
Enter fullscreen mode Exit fullscreen mode

Где <disk number> - это примонтированный диск, а <disk name> - это имя диска, с которым он будет отображаться в приложениях и в /Volumes/*.

Пример команды с заполненными параметрами:

diskutil partitionDisk /dev/disk4 1 GPT APFS KINGSTON R
Enter fullscreen mode Exit fullscreen mode

После успешного выполнения команды в diskutil list мы увидим, что диска теперь два и нужный отформатирован в APFS. На рисунке ниже приведен результат этой команды после форматирования.

Image description

Теперь у вас внешний диск в APFS и на нем не будут создаваться файлы с ._ (dot underscore). Так же в этой файловой системе у меня увеличилась скорость чтения и записи на 200Mb/s в сравнении с ExFat.

Top comments (0)