Есть ли возможность «дефрагментировать» разреженный пакетный образ и освободить (большую часть) свободного пространства?
Вот предыстория: я использую разреженные пакеты, и время от времени я хочу освободить от них пространство, поэтому я запускаю:
hdiutil compact image.sparsebundle
Однако, как объяснено на странице руководства, он восстанавливает только полностью неиспользуемые файлы группы, поэтому в моем случае он говорит:
Reclaimed 0 bytes out of 90.4 GB possible.
Конечно, есть возможность скопировать содержимое этого изображения в новый разреженный комплект, который затем используется вместо этого, но это громоздко и требует достаточно свободного места для этой операции.
Тем временем я обнаружил, что вывод команды compact несколько вводит в заблуждение (в настоящее время я использую OS X 10.5.7), поскольку в нем иногда указывается максимально возможный размер, превышающий размер, который в настоящее время занимает пакет изображений на жестком диске. привод. Я не посмотрел поближе, но вывод кажется либо максимальным размером, либо «максимальным размером» - «использованным размером».
Ответы:
Интересный!
Из того, что я слышал, разреженный пакет делит данные на 8-мегабайтные полосы. Изменение размера группы может помочь, если вам повезет. Я имею в виду, вы никогда не получите 100% мелиорированного пространства, но, может быть, лучше, чем сейчас. (В зависимости от данных на изображении и т. Д.)
Я провел грязный простой тест с двумя разреженными пакетами по 500 МБ, один с размером полосы 8 МБ (по умолчанию), а другой с 1 МБ (наименьший допустимый размер из того, что я могу сказать). Я скопировал более 400 МБ mp3-файлов, затем удалил все остальные файлы и запустил
hdiutil compact
их задницы.Команда для преобразования вашего разреженного пакета
Размер полосы в блоке 512 байт. Таким образом, приведенный выше пример устанавливает размер полосы 512 * 2048 = 1 МБ. Просто будьте осторожны, если вы имеете дело с образами TimeMachine или образами домашней папки пользователя и т. Д. Вы отклоняетесь от пути Apple :) Сохраняйте резервную копию!
Что касается дефрагментации: у меня странное чувство, что это так же быстро (или быстрее!) Просто использовать hdiutil для преобразования sparsefile в новый разреженный файл с тем же форматом. Я думаю, что он пытается быть умным об этом. Но я не знаю
(Обратите внимание, что дефрагментация разреженного комплекта просто дефрагментирует данные на диске, а не разреженные диапазоны, если только это не дефрагментатор с разреженным комплектом.
hdiutil convert
Я считаю, что «дефрагментация» полосы делает).источник
-o
должны быть непосредственно передdst.sparsebundle
, а неsrc.sparsebundle
(-o
обозначает «выходные данные»).-encryption
переключатель в команду.Я думаю, что возможные 90,4 ГБ - это просто неправильно. Когда я побежал:
... это освободило 16 ГБ пространства, что примерно соответствует моим ожиданиям. Как ни странно, он сказал примерно «800 ГБ возможно», что намного больше, чем емкость моего HD. Итак, я полагаю, что вторая цифра - это просто некое (ошибочное) теоретическое число.
источник
@ Оскар указал нам правильное направление. Но вам не нужно конвертировать в 1 МБ и компактнее, в надежде вернуть себе место.
Вместо этого просто скопируйте ваш sparsebundle в другой новый sparsebundle. Это, в свою очередь, дефрагментирует изображение для вас. И в то же время вы можете изменить файловую систему, размер и даже полосы.
Вот пример, который я недавно сделал, конвертируя 20-гигабайтное «кодовое» изображение, которое я синхронизирую между устройствами.
Посмотреть все варианты с
hdiutil create -help
.Эта команда выводит:
Вы можете увидеть
-attach
опцию монтирования его под/Volumes/code
.Примечание: я использую
HSFX
HFS + с учетом регистра, потому что я синхронизирую свои образы и с Linux и монтирую их. Скорее всего, вы захотите использоватьHFS+
вместо этого, так как macOS обычно без учета регистра.Теперь все, что мне нужно сделать, это скопировать все в мой новый sparsebundle:
А теперь для сравнения:
Ура. Мой sparsebundle 15 ГБ теперь 3 ГБ, дефрагментирован, и группы изменились!
источник
Я не знаю свободного способа сделать это, но я верю, что Prosoft Drive Genius сделает то, что вам нужно здесь:
http://www.prosofteng.com/products/drive_genius.php
Вы монтируете sparsebundle, дефрагментируете его с помощью Drive Genius, а затем
Команда должна работать.
источник
Бьюсь об заклад, диск, который содержит разреженный комплект, имеет около 90 ГБ свободного места? Поскольку разреженные пакеты часто могут увеличиваться до заполнения диска, об этом пространстве просто сообщается как о доступном свободном пространстве ... Вы увидите те же цифры в Дисковой утилите. На самом деле очень обманчиво.
Следующее может дать вам некоторое представление:
источник
У меня был проблемный разреженный пакет, который утверждал, что 950 ГиБ заняли из 1024 ГиБ (мой SSD имеет размер всего 320 ГиБ, поэтому этого не могло быть).
hdi compact
не помоглоЯ запустил «Скорую помощь» из Дисковой утилиты как на пачке, так и на разделе, и это помогло - свободный космический измеритель начал показывать реальные 20 ГиБ, как и должно быть, а затем
hdi compact
запустился без проблем.источник