~/Library/Containers — не папка кэша, и один этот факт закрывает бо́льшую часть вопроса. Внутри лежат данные приложений из песочницы: их настройки, базы, скачанные медиа. Удалите контейнер приложения, которым пользуетесь, — сбросите его вместе с данными. Удалите контейнер приложения, стёртого в прошлом году, — освободите место и ничего не потеряете.
Главное правило: сверьте каждый контейнер со списком установленных приложений. Убирайте те, за которыми уже ничего не стоит, остальные не трогайте.
Краткий ответ
- Выведите папки по размеру:
du -sh ~/Library/Containers/* | sort -h | tail -20. - Прочитайте bundle identifier в имени папки и найдите приложение, которому она принадлежит.
- В Корзину отправляйте только контейнеры приложений, которых на Mac уже нет.
- Для приложения, которым вы пользуетесь, чистите сохранённые медиа изнутри самого приложения.
- С
~/Library/Group Containersобращайтесь осторожнее: её делят несколько компонентов. - Закройте приложение, прежде чем трогать его контейнер, и не очищайте Корзину сутки.
Что такое контейнер
macOS запускает приложения из песочницы в отдельной ограниченной домашней папке. Так работает каждое приложение из App Store и многие приложения вне его. Эта частная домашняя папка и есть контейнер.
Откройте любой — структура покажется знакомой:
~/Library/Containers/com.apple.Safari/
Data/
Library/
Application Support/
Caches/
Preferences/
Documents/
Desktop/ -> ссылка на ваш настоящий Рабочий стол
Downloads/ -> ссылка на вашу настоящую папку «Загрузки»
Для приложения Data — это домашний каталог. Внутри Library лежит то, что принадлежит только ему. Элементы Desktop и Documents — символические ссылки на ваши настоящие папки, по которым приложение проходит лишь при наличии разрешения.
Эта деталь снимает главное опасение: удаляя контейнер, вы удаляете ссылки, а не файлы, на которые они указывают. Документы остаются там, где и были.
Что теряется при удалении
Часть, принадлежащая приложению, — это настоящие данные.
- настройка аккаунта и состояние входа;
- параметры приложения и состояние окон;
- база, которую оно построило: индекс почты, история сообщений;
- медиа, которые оно скачало и сложило в собственное хранилище.
Приложение, не нашедшее свой контейнер, стартует как только что установленное. Для заметок, которые синхронизируются с сервером, это стоит повторной загрузки. Для приложения, хранившего всё локально, это стоит содержимого.
Какие контейнеры удалять безопасно
Безопасны те, чьи приложения на Mac уже не существуют.
du -sh ~/Library/Containers/* | sort -h | tail -20
Возьмите каждую крупную папку и прочитайте имя. com.company.appname называет и разработчика, и приложение. Дальше проверьте, лежит ли это приложение в /Applications. Если нет — папка осталась после удаления: приложение убрали, контейнер остался. Переносите в Корзину.
Если приложение на месте, оставьте контейнер и разбирайтесь с размером изнутри. У мессенджеров, почтовых клиентов и браузеров есть настройки для сохранённых медиа и кэша, и такой путь сохраняет настройку аккаунта.
Group Containers устроены иначе
~/Library/Group Containers хранит данные, общие для компонентов с одной группой приложений: приложение и его расширение, приложение и виджет, набор программ и его помощник. Одна папка может обслуживать несколько видимых частей.
Правило то же, но радиус поражения шире. Убрать групповой контейнер программы, которой у вас нет, — нормально. Убрать тот, который действующее приложение делит с расширением, — сломать общее состояние сразу для обоих, и приложение обычно не объяснит, почему.
Что лежит в самых крупных контейнерах
Горстка имён встречается почти в каждом списке.
- Мессенджеры. Полученные фото и видео копятся внутри контейнера. У большинства таких приложений есть экран хранилища, где старые медиа удаляются без потери аккаунта.
- Почта. Копии скачанных вложений лежат в контейнере и годами растут незаметно.
- Safari. Его кэш находится в
com.apple.Safari, а не в~/Library/Caches, поэтому в списке кэша браузер как будто отсутствует. - Приложения, опробованные один раз. Десятки маленьких папок от программ, которых нет уже несколько лет. По отдельности неважно, вместе — приличная пара сотен мегабайт.
Порядок, который убережёт от неприятностей
- Отсортируйте контейнеры по размеру и смотрите только на начало списка.
- По каждому решите, установлено ли ещё это приложение.
- Закройте приложение, если оно запущено.
- Переносите в Корзину только осиротевшие контейнеры.
- Поработайте день и только потом очищайте Корзину.
- Для приложений, которые остаются, откройте их настройки и удалите сохранённые медиа там.
Второй шаг и есть вся работа. Контейнер стоит удалять, когда за ним ничего нет, и стоит оставить, когда есть.
Итог
Относитесь к ~/Library/Containers как к данным приложений — это они и есть. Вопрос никогда не звучит «можно ли удалять containers» вообще. Он звучит так: стоит ли ещё за конкретным контейнером приложение. Нет — в Корзину. Да — зайдите в приложение, удалите там сохранённое, а контейнер оставьте на месте.
FAQ
Безопасно ли удалять Containers на Mac?
Безопасно только для приложений, которых у вас больше нет. В контейнере лежат данные приложения из песочницы: настройки, документы, которыми оно управляет, и скачанный контент. Удалив контейнер установленного приложения, вы сбрасываете его в исходное состояние вместе с данными. Удалив контейнер приложения, стёртого год назад, вы освобождаете место и ничего не теряете.
Что такое папка ~/Library/Containers на Mac?
Это место, где macOS держит домашнюю папку песочницы для каждого приложения, работающего в изолированной среде, — то есть для всех приложений из App Store и многих других. Каждая подпапка названа по bundle identifier приложения и содержит папку Data, устроенную как маленький домашний каталог только для него.
Удаление контейнера сотрёт мои документы?
Внутри папки Data элементы «Рабочий стол», «Документы» и «Загрузки» — это символические ссылки на ваши настоящие папки. Удаляя контейнер, вы удаляете ссылки, а файлы остаются на месте. Теряются данные, которые приложение хранило внутри контейнера: настройки, его база и всё, что оно туда скачало.
Чем Containers отличаются от Group Containers?
Контейнер принадлежит одному приложению. Групповой контейнер в ~/Library/Group Containers общий для приложений, объявивших одну группу, — так приложение общается со своими расширениями и виджетами. Удаление группового контейнера может сломать общее состояние сразу нескольких компонентов, поэтому здесь нужна большая осторожность.
Как найти контейнеры от удалённых приложений?
Сравните bundle identifier в ~/Library/Containers со списком установленных приложений. Папка с именем приложения, которого больше нет в «Программах», — это остаток, его можно переносить в Корзину. Сначала отсортируйте по размеру: большинство остатков крошечные, и только несколько стоят усилий.
Почему один контейнер весит несколько гигабайт?
Мессенджеры держат внутри контейнера полученные медиа, Почта хранит копии скачанных вложений, а Safari держит там свой кэш. В таких случаях обычно можно открыть настройки самого приложения и удалить сохранённые медиа изнутри — это безопаснее, чем сносить контейнер вместе с настройками аккаунта.