Промучившись много часов в поисках решения, решил поделиться найденным способом с читателями Хабра.
Все резервные копии Time Machine хранит в «растущем образ-пакете диска», физический размер которого в месте размещения занимает ровно столько места, сколько занимают данные, находящиеся в нем. Такой подход избавляет нас от необходимости разбивать хранилище на разделы — по одному для разных целей — все образ-пакеты хранятся на одной физической партиции, потребляя мегабайты и гигабайты только по необходимости. Удобно когда не знаешь заранее какой размер выделить для той или иной задачи.
Полезной возможностью «растущего образ-пакета диска» является задание ограничения на максимальный его размер. При первом запуске Time Machine создает образ-пакет с ограничением, равным всей емкости раздела, на котором он будет располагаться. А при исчерпании свободного места просто начинают удаляться старые резервные копии. До версии Mac OS X 10.6.3 существовал способ изменить это ограничение при помощи утилиты hdiutil. Например следующая строка устанавливает ограничение на максимальный размер образ-пакета, равный 500 Гб:
hdiutil resize -size 500G -shrinkonly /Volumes/Data/macbook.sparsebundle
Однако с обновлением 10.6.3 Time Machine каждый раз при запуске стала автоматически изменять параметры образ-пакета, восстанавливая размер ограничения в значение по-умолчанию (то есть в максимум) в случае если оно было изменено либо изменилась емкость носителя.
Официального решения проблемы от Apple до сих пор нет. Выходом же является очередной трюк — заблокировать изменение параметров образ-пакета после установки необходимого ограничения размера для него.
Стоит отметить, что параметры образа хранятся в самом образе в файлах Info.plist и Info.bckup. И для того, чтобы заблокировать изменения параметров, необходимо заблокировать изменение этих файлов. Сразу скажу, что простой запрет записи при помощи chmod не работает. Зато работает другой способ (10.8.2) — блокировка файлов с использованием утилиты SetFile:
SetFile -a L /Volumes/Data/macbook.sparsebundle/Info.*
После выполнения этой команды Time Machine больше не сможет менять параметры образа:
SetFile не входит в стандартный набор утилит Mac OS X и ставится путем установки приложения Xcode и дополнительного компонента «Command Line Tools»:
Чтобы вновь иметь возможность изменять параметры образа, необходимо снять блокировку (используем те же аргументы с той лишь разницей, что вместо заглавной буквы «L» ставим ее прописную версию — «l»):
SetFile -a l /Volumes/Data/macbook.sparsebundle/Info.*
PS: Способ был был найден во время изучения этого обсуждения.
Автор: renskiy