Почему при удалении файлов на USB-накопителе FAT32 в macOS файлы просто переименовываются, а не удаляются?

Вопрос или проблема

Мне часто нужно готовить файлы на USB-флешке формата FAT32, используя Mac, а затем вставлять флешку в телевизор для его родного отображения слайд-шоу.

Используя Finder, я перемещаю старые содержимое в корзину, а затем копирую новое содержимое. Затем я извлекаю USB-флешку и жду, пока она тихо не завершится, прежде чем удалить ее (на ней есть светодиод активности, который перестает мигать).

Однако, когда флешка вставляется в телевизор (или ПК), файлы все еще там, переименованные с префиксом ._ (как я думаю). Хотя в папке в Finder ничего не отображается.

Как я могу действительно и полностью удалить файлы с USB-флешки FAT32 с помощью Finder в macOS?

Вы можете удалить файлы ._ на вашей USB-флешке FAT32, введя команду ниже в окне терминала.

dot_clean /Volumes/<Имя тома>

Здесь вам нужно заменить <Имя тома> на “Имя и расширение”, отображаемые в окне “Получить информацию” для тома.

Чтобы сделать это из Finder, вам нужно использовать приложение Automator для создания быстрого действия. Ниже приведены два быстрых способа получить это быстрое действие. Подробности для каждого из них приведены ниже.

  • Создайте простое действие самостоятельно. Инструкции, представленные в этом ответе, не указывают никаких опций dot_clean и записывают весь вывод, который можно просмотреть с помощью приложения Console.
  • Скачайте стороннее быстрое действие. Приведенное в этом ответе действие написано на AppleScript, что позволяет пользователю выбирать параметры для команды dot_clean и отображать диалоговые окна и уведомления, когда это уместно. Весь вывод записывается, что можно просмотреть с помощью приложения Console.

Создайте сами

Шаги приведены ниже.

  1. Откройте приложение Automator и выберите новое быстрое действие. В более старых версиях macOS это называлось службой.

  2. Перетащите “Запустить сценарий оболочки” в ваш пустой рабочий процесс.

  3. Замените любой существующий сценарий следующим

    {
      echo -n "dot_clean"
      printf " %q" "$@"
      echo
      dot_clean "$@"
      status=$?
      echo "Возвращаемый статус: $status"
      exit $status
    } >> ~/Library/Logs/Finder.log 2>&1
    

    В общем, этот скрипт выводит команду dot_clean, которую нужно выполнить, а затем выполняет команду. Весь вывод отправляется в Finder.log, который можно просмотреть с помощью приложения Console.

  4. Сохраните с именем “Dot Clean”. Файл рабочего процесса ~/Library/Services/Dot Clean.workflow будет создан.

  5. Настройте остальную часть рабочего процесса, как показано ниже. Это было создано с использованием macOS Sonoma 14.7.1.

  6. Закройте рабочий процесс. Выйдите из приложения Automator.

Ниже приведен пример, где все файлы ._ удаляются с флешки.

Следующий вывод был добавлен в файл ~/Library/Logs/Finder.log.

dot_clean /Volumes/MYFLASHDRV
Не удалось изменить каталог на .Spotlight-V100
Неправильное имя пути: Операция не разрешена
Не удалось изменить каталог на .TemporaryItems
Неправильное имя пути: Операция не разрешена
Возвращаемый статус: 0

Этот вывод можно просмотреть в приложении Console, как показано ниже.

Скачать из Интернета

Я написал рабочий процесс, который использует AppleScript вместо сценария Bash. Его можно найти в проекте SourceForge Dot Clean. Инструкции по установке и использованию можно найти здесь. Использование на той же флешке, что и раньше, вызывает следующее всплывающее окно, где было выбрано “Продолжить”.

Далее следующее всплывающее окно позволяет выбрать параметры. Здесь было выбрано “Продолжить” без выбора каких-либо параметров.

Выдано следующее уведомление.

Следующий вывод был добавлен в файл ~/Library/Logs/Finder.log.

**********
2024-12-04 14:15:06 dot clean выполняет: dot_clean '/Volumes/MYFLASHDRV' 2>&1
2024-12-04 14:15:06 dot clean завершено:
Не удалось изменить каталог на .Spotlight-V100
Неправильное имя пути: Операция не разрешена
Не удалось изменить каталог на .TemporaryItems
Неправильное имя пути: Операция не разрешена

Этот вывод можно просмотреть в приложении Console, как показано ниже.

Ответ или решение

Почему удаление файлов на USB-накопителе FAT32 в macOS просто переименовывает файлы

Работа с USB-накопителями FAT32 на macOS может вызвать некоторые неудобства, особенно когда дело доходит до управления файлами. Одной из наиболее распространённых проблем, с которыми сталкиваются пользователи, является то, что удалённые файлы на таких накопителях не исчезают полностью, а переименовываются и остаются видимыми для других систем, таких как телевизоры или ПК. Давайте подробнее рассмотрим причины данного поведения и способы его решения.

1. Структура файловой системы FAT32

Файловая система FAT32, разработанная Microsoft, имеет свои особенности, которые влияют на то, как файлы обрабатываются в различных операционных системах. Когда вы удаляете файл в macOS через Finder, он перемещается в корзину и фактически не удаляется моментально. В системе macOS используется механизм, который "скрывает" файл, добавляя к его имени префикс ._, но не избавляется от него полностью.

2. Особенности работы macOS и системной интеграции

macOS использует метафайлы для сохранения дополнительной информации о файлах. Эти метафайлы контролируют такие характеристики, как значки и атрибуты файлов, что может быть полезным для визуализации и функциональности в экосистеме Apple. Однако, когда такие файлы, как ._filename, создаются на FAT32-накопителе, это происходит из-за того, что сама структура FAT32 не предназначена для хранения таких метаданных должным образом. Следовательно, список файлов на USB-накопителе отображает только видимые файлы, в то время как метафайлы продолжают существовать.

3. Решение проблемы: Использование команды dot_clean

Чтобы гарантировать полное удаление всех файлов, включая метафайлы, необходимо использовать команду dot_clean в терминале. Эта команда объединяет все метафайлы с соответствующими оригинальными файлами и удаляет ненужные метаданные. Данная команда может быть применена следующим образом:

dot_clean /Volumes/<Имя_тома>
  • <Имя_тома> — это название вашего USB-накопителя. Убедитесь, что вы ввели его корректно, как указано в меню "Информация".

4. Создание быстрого действия с помощью Automator

Если вы хотите сделать процесс ещё более удобным, вы можете создать Automator-операцию, которая позволит легко применять dot_clean к любому выбранному объекту на вашем USB. Вот шаги для создания такого действия:

  1. Откройте Automator и выберите создание новой быстрой операции.
  2. Перетащите на пустое рабочее пространство действие "Выполнить оболочку сценарий".
  3. Вставьте вышеуказанный код для выполнения команды dot_clean.
  4. Сохраните вашу операцию, назвав её, например, "Очистить метафайлы".

Теперь, когда вы будете готовить ваш USB для использования с телевизором или PC, достаточно будет выполнить созданное действие, чтобы гарантировать полное удаление всех файлов.

Заключение

Удаление файлов на FAT32-накопителе с использованием macOS требует понимания специфики работы операционной системы и файловой системы, используемой на вашем USB-накопителе. Решение проблемы с ._ файлами через команду dot_clean и автоматизацию этого процесса с помощью Automator предоставляют вам контроль над вашими данными и обеспечивают корректную работу с устройствами, не поддерживающими macOS. Это позволит избежать неловких ситуаций при использовании ваших файлов на других системах.

Оцените материал
Добавить комментарий

Капча загружается...