Pull to refresh

Time Machine: ограничение размера файла бэкапов

Development for MacOS
Промучившись много часов в поисках решения, решил поделиться найденным способом с читателями Хабра.


Все резервные копии 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: Способ был был найден во время изучения этого обсуждения.
Tags:time machinetime capsulemac os xbackupapple
Hubs: Development for MacOS
Total votes 20: ↑19 and ↓1 +18
Views21.7K

Comments 22

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now

Fullstack Java / Angular Developer/Full-time/remote
from 120,000 to 250,000 ₽Bergmann InfotechRemote job
React Native (Mobile) Developer
from 130,000 to 270,000 ₽GXB DevelopmentRemote job
Frontend Software Development Engineer
from 3,000 to 5,000 $EnnablRemote job