Можно ли заблокировать sparsebundles, чтобы сделать их доступными только для чтения?

5

С файлами sparseimage я могу установить атрибут Locked в «Get Info», чтобы предотвратить изменение его содержимого. Это похоже на то, как это происходит с разреженными пучками.

В данный момент я храню свой sparsebundle внутри sparseimage, чтобы получить эту функцию легкой блокировки.

Я пропускаю более простой способ сделать мой редкий том только для чтения?

Noop
источник

Ответы:

5

Похоже, что Finder рекурсивно не применяет флаг Locked (или изменения разрешений в диалоге Get Info ) для всего пакета. Если это то, что вам регулярно нужно, вы можете заняться написанием сервиса для следующих предложений, так что вы можете сделать это из Finder вместо терминала.


Вы можете удалить разрешения на запись для пакета в командной строке, выполнив chmod:

chmod -R a-w 

Введите эту команду (включая завершающий символ пробела), затем перетащите значок разреженного пакета в окно терминала. Это должно выглядеть так, в зависимости от имени вашего разреженного комплекта и места его хранения:

chmod -R a-w /path/to/container.sparsebundle

Запустите, chmod -R u+w /path/to/container.sparsebundleчтобы снова получить права на запись. Эти команды могут занять некоторое время для больших разреженных пакетов.


Кроме того, вы можете установить флаг блокировки для всех файлов в пакете, выполнив команду chflags:

chflags -R uimmutable /path/to/container.sparsebundle

Чтобы вернуться, бегите chflags -R nouimmutable /path/to/container.sparsebundle.


Вы также можете всегда монтировать пакет только для чтения, чтобы только временно предотвратить изменения. Для этого запустите в Терминале следующее:

hdiutil attach /path/to/container.sparsebundle -readonly

Обратите внимание, что вам нужно всегда монтировать его так, чтобы предотвратить изменения.


Если вы можете терпеть образ, используя точку монтирования, отличную от обычной, вы можете запустить configure своей системы, чтобы всегда монтировать этот образ только для чтения.

Сначала определите громкость UUID. Смонтируйте разреженный комплект и запустите diskutil listиз командной строки. Найдите запись с тем же именем, что и ваш том, например:

/dev/disk8
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *102.4 MB   disk8
   1:        Apple_partition_map                         32.3 KB    disk8s1
   2:                  Apple_HFS Disk Image              102.4 MB   disk8s2

В этом примере том отображается как «Образ диска» в Finder. Обратите внимание на идентификатор справа ( disk8s2). Вам необходимо ввести его для следующей команды после /dev/:

diskutil info /dev/disk8s2

Найдите строку, которая начинается с тома UUID , и запишите значение справа от него, напримерD7C6180C-2178-32EF-98E6-7FB71AED2ABC

Теперь нам просто нужно создать собственную точку монтирования. Обычно каждый том монтируется /Volumes, но эти точки монтирования удаляются при размонтировании, и следующая попытка монтирования тома, на который есть ссылки, fstabзавершится неудачей, поскольку точка монтирования не существует. Так что просто создайте папку с именем «Image» в вашем домашнем каталоге.

Теперь мы можем OS X всегда монтировать его только для чтения. В терминале запустите sudo vifsи введите свой пароль. Я предполагаю, что вы достаточно знакомы с vi/ vim, если нет, сейчас самое время прочитать об этом.

Добавьте строку, подобную следующей, заменив правильные значения для UUID и точки монтирования, применимые к вашей системе:

UUID=D7C6180C-2178-32EF-98E6-7FB71AED2A56 /Users/danielbeck/Image hfs ro

Затем сохраните и закройте. Теперь вы можете смонтировать образ двойным щелчком, он появится в Finder и будет доступен только для чтения.

Даниэль Бек
источник
Вау, спасибо за этот подробный ответ! В принципе, что вы думаете о моем хранении разреженного пакета в разреженном изображении, которое я могу заблокировать? Я использую sparsebundle, чтобы я мог постепенно создавать резервные копии изменений в сетевой том. Есть ли какая-то опасность, которую я упускаю из виду при этом?
noop
@noop Это зависит от вашего варианта использования. Могут быть проблемы с использованием процессора, так как вы проходите два слоя виртуальных дисков вместо одного. Кроме того, при изменении содержимого разреженного пакета необходимо убедиться, что разреженное изображение всегда соответствует комплекту с точки зрения ограничения размера (и соответствующей карты разделов при переходе> 2 ТБ). Если вы сильно меняете содержимое изображения, сжатие (то есть восстановление дискового пространства, в настоящее время неиспользуемого в разреженном комплекте) будет более трудоемким из-за вложенной природы вашего решения.
Даниэль Бек
я не могу сейчас решить, продолжать ли мой подход sparseimage / sparsebundle или использовать hdiutil -readonly. В любом случае, спасибо за ваши идеи.
noop