Введение / Зачем это нужно
Со временем на диске Mac накапливаются копии фотографий, загруженные документы, временные файлы и резервные копии мессенджеров. Они занимают десятки гигабайт, замедляют индексацию Spotlight и мешают устанавливать системные обновления. Удаление дубликатов возвращает свободное пространство, ускоряет работу Finder и упрощает навигацию по библиотекам. В этом руководстве мы разберём безопасный метод поиска и удаления повторов с помощью терминала и проверенных утилит.
Требования / Подготовка
Перед началом убедитесь, что ваш Mac соответствует следующим условиям:
- Установлена macOS Ventura 13 или новее.
- Доступен аккаунт с правами администратора для установки пакетов.
- Подключён внешний накопитель или настроена Time Machine для резервного копирования.
- Установлен менеджер пакетов Homebrew. Если его нет, скачайте установщик с официального сайта
brew.shи выполните скрипт в Терминале.
Шаг 1: Создание резервной копии данных
Операции с файлами необратимы после очистки Корзины. Перед сканированием защитите важные данные. Откройте Системные настройки → Основные → Хранилище и зафиксировать текущий объём свободного места. Запустите Time Machine или вручную скопируйте папки Документы, Изображения и Загрузки на внешний диск. Убедитесь, что процесс копирования завершился успешно и файлы открываются на резервном носителе.
⚠️ Важно: Никогда не запускайте массовое удаление в системных директориях
/System,/Libraryили/Applications. Дубликаты обычно находятся в пользовательских папках. Работа с системными каталогами может нарушить целостность macOS.
Шаг 2: Установка и настройка утилиты поиска
Для точного поиска файлов по содержимому, а не только по имени, используем утилиту jdupes. Она сравнивает хэш-суммы и размер, что исключает ложные срабатывания.
Откройте приложение Терминал (через Spotlight: Cmd + Пробел, введите Терминал) и выполните:
brew install jdupes
Дождитесь завершения загрузки зависимостей. Проверьте корректность установки:
jdupes --version
В ответе отобразится текущая версия пакета. Если команда возвращает ошибку command not found, перезапустите Терминал или добавьте путь Homebrew в переменную $PATH в файле ~/.zshrc.
Шаг 3: Поиск и удаление повторяющихся файлов
Утилита работает в интерактивном режиме. Мы запустим сканирование выбранной директории, а затем вручную подтвердим удаление.
- Перейдите в папку, где планируете искать копии. Например, в
Загрузки:
cd ~/Downloads
- Запустите поиск с флагами
-r(рекурсивно по подпапкам) и-I(игнорировать регистр имён):
jdupes -r -I .
Команда выведет на экран группы файлов с идентичным содержимым. Внимательно изучите пути. Убедитесь, что в каждой группе остаётся как минимум один оригинал.
3. Для безопасного удаления всех копий, кроме первого файла в списке, добавьте флаг -d (delete) с запросом подтверждения:
jdupes -r -I -d --prompt .
Терминал будет запрашивать действие для каждой найденной группы. Нажимайте y для удаления дубликатов или n, чтобы пропустить группу. Утилита переместит копии в Корзину или удалит их напрямую в зависимости от прав доступа к папке.
💡 Совет: Чтобы не удалять файлы случайно, сначала запустите команду с флагом
-S(сортировка по размеру) и-q(минимальный вывод). Это покажет потенциальный объём освобождаемого места без лишнего текста.
Проверка результата
После завершения работы утилиты очистите Корзину macOS: нажмите правой кнопкой мыши на её значок в доке и выберите Очистить Корзину. Перезагрузите Mac для обновления файловой индексации. Откройте Системные настройки → Основные → Хранилище и сравните текущие показатели с начальными. Разница покажет реально освобождённый объём. Для дополнительной проверки повторно запустите jdupes -r -I . в той же директории — команда должна вернуть пустой вывод, что подтверждает отсутствие оставшихся копий.
Возможные проблемы
- Ошибка
Permission denied: Утилита не имеет прав на чтение некоторых папок. Запускайте команду из директорий пользователя (~), а не из корня системы. Для сканирования внешних дисков убедитесь, что они примонтированы с правами на запись. - Сканирование зависает на больших файлах: Видеоархивы и образы дисков требуют много времени на вычисление хэшей. Добавьте флаг
-B 500Mдля пропуска файлов крупнее 500 МБ или отфильтруйте расширения:jdupes -r -I -E '.jpg,.png,.pdf' .. - Ложные срабатывания на метаданные: Фотографии с одинаковым изображением, но разными EXIF-тегами могут считаться разными. В этом случае используйте графические утилиты с визуальным сравнением пикселей, например
dupeGuru, которая игнорирует метаданные при сканировании изображений. - Диск заполнен более чем на 95%: Система может блокировать создание временных файлов утилиты. Освободите вручную 2–3 ГБ, удалив старые архивы или очистив кэш, перед повторным запуском сканирования.