Что является преимуществами структуры файловой системы Unix

При использовании rsync --checksum хороший общий способ "скопировать, если изменено", в Вашем особом случае существует еще лучшее решение!

Если Вы не хотите излишне перекомпилировать файлы, необходимо использовать кэш, который был создан для точно этой цели! На самом деле, мало того, что это избежит ненужный, перекомпилировал Ваших автоматически сгенерированных файлов, это также ускорит вещи каждый раз, когда Вы делаете make clean и перекомпилируйте с нуля.

Затем я уверен, что Вы спросите, "Действительно ли это безопасно?" Ну, Да, как веб-сайт указывает:

Действительно ли это безопасно?

Да. Самый важный аспект кэша компилятора состоит в том, чтобы всегда производить точно тот же вывод, который произвел бы реальный компилятор. Это включает обеспечение точно тех же объектных файлов и точно тех же предупреждений компилятора, которые были бы произведены, если Вы используете реальный компилятор. Единственным путем необходимо смочь сказать об использовании кэша, скорость.

И это просто в использовании это, просто добавив его как префикс в CC= строка Вашего make-файла (или можно использовать символьные ссылки, но make-файл путь, вероятно, лучше).

9
17.01.2013, 21:13
4 ответа

Что кажется мне, преимущество easiest-to-think-of состоит в том, что подобные файлы живут в том же дереве каталогов. Конфигурационные файлы живут в /etc, файлы журнала и/или файлы трассировки во время выполнения живут в /var/log, исполняемые файлы живут в /usr/bin, информация о выполнении как файлы PID живет в /var/run. Вы хотите знать то, что находится в файле конфигурации NTP? Каталог изменения к /etc и сделайте ls ntp*. Вы хотите иметь некоторые исполняемые файлы часов программы так, чтобы некоторый традиционный вирус файловой системы не заражал их? Все в /usr/bin и /usr/local/bin наблюдение потребностей.

Второе преимущество, о котором я могу думать, состоит в том, что стиль Unix организации способствует разделению данных и исполняемого файла. Исполняемые файлы живут в каталоге, это хорошо находится далеко от того, где шаблоны живут (/usr/share, вероятно), и хорошо далеко от того, где данные живут. То разделение могло бы быть причиной, почему Unix/Linux / *BSD имеет больше сопротивления вирусам файловой системы, чем Windows делает, или старый Mac Pre-OSX имел.

8
27.01.2020, 20:04
  • 1
    Это - положительные стороны. Почему разделение исполняемого файла и данных - шаблон - файлы конфигурации причина большего количества защиты от вирусов? –  Jan Koester 17.01.2013, 21:33
  • 2
    Много (но не все) вирусов, и черви в мире распространяют из-за способности изменить данные на исполняемый файл: переполнения стека и Внедрение SQL и инжекция кода все прокладывают себе путь. Макровирусы "Word" распространили по крайней мере частично, потому что макросы "Word" включены в .doc файлы. Разделение данных из исполняемого файла файлом является одним уровнем защиты, поместив данные в один каталог, исполняемый файл за секунду, шаблоны в 3-м, конфигурация в 4-м помещает еще больше барьеров для запутывающих данных и исполняемого файла в место. –  Bruce Ediger 17.01.2013, 22:31
  • 3
    Разделительным аргументом данных-и-исполняемого-файла является полная ерунда. Организация файловой системы для преимущества человека; это не похоже существует некоторое физическое разделение между битами, которое препятствует тому, чтобы они дали cooties друг другу или чему-либо. Безопасность UNIX исторически лучше из-за более сильного, more-tightly-enforced модель полномочий в целом. сообщение –  fluffy 17.01.2013, 22:54
  • 4
    @fluffy работ, который Отдельные файловые системы предлагают немного более сильному разделению, но тот вопрос частично спорен, поскольку не возможно отделиться /bin, /etc, от /. –  jw013 17.01.2013, 23:47
  • 5
    @fluffy - согласованный, никакое "физическое" разделение не существует или возможно. Но это - разделение по имени. Вредоносное программное обеспечение должно посмотреть в некотором другом каталоге (а не "." или dirname 0$ или чем-то) для нахождения шаблонов или других данных. Это не абсолютная безопасность, больше, чем закрытие стеклянного окна является абсолютной безопасностью. Безопасность является экономической пользой с предельным значением для каждой дополнительной единицы работы. Каждый немного помогает. –  Bruce Ediger 18.01.2013, 00:01

Нет действительно никаких преимуществ для этого расположения кроме него являющийся легким предположить, где совместно использовано, и конфигурационные файлы для приложения. UNIX имеет длинное наследие этого вида расположения, и повреждаться это было бы довольно трудно. Однако некоторые дистрибутивы UNIX изменили свою модель - они только обеспечивают старые местоположения для целей прежней версии, и другие приложения связываются в ее собственный небольшой каталог/пакет. Mac OS X является самым видным примером этого, и существует несколько неясных дистрибутивов Linux, которые делают то же самое (и Android делает что-то подобное, только берет его немного далее и устанавливает и запускает каждое приложение под его собственным идентификатором пользователя также).

Главное, которое предоставляет конвенция файловой системы, состоит просто в том, что - конвенция, так, чтобы люди знали, где искать файлы (быть этим вручную или в коде). Нет никакой реальной технической причины его, чтобы быть одним путем по другому.

1
27.01.2020, 20:04

Независимо от того, какая организация будет выбрана, это сделает некоторые вещи проще, а некоторые - сложнее.

Организация файлов по типам, способом Unix (в bin, man, lib/python, ...), облегчает использование файлов. Если вы хотите запустить команду, вы знаете, где её найти, независимо от того, какой пакет её предоставляет. Если вы хотите искать по документации, все это в одном месте. Если какая-то программа предоставляет модуль подсветки синтаксиса Vim, функцию завершения zsh или привязки Python, то соответствующий файл будет в том месте, где его может найти vim/zsh/python.

Unix также организует файлы по шаблонам использования. Конфигурационные файлы находятся в /etc, файлы, которые не изменяются в нормальном режиме работы, находятся в /usr, а файлы, которые изменяются автоматически, находятся в /var. Пользовательские данные заходят в /home. Это очень полезно для управления конфигурацией (управлять тем, что находится в /etc плюс список установленных пакетов). Также полезно определить стратегии резервного копирования: то, что в /etc и /home очень важно, в то время как то, что в /usr можно легко загрузить заново.

Основная стоимость метода Unix заключается в том, что установка программного обеспечения распространяется по многим каталогам. Тем не менее, в современных Unix-системах все равно есть менеджеры пакетов; управление файлами во многих каталогах - не самая сложная вещь, которую они делают (отслеживание зависимостей очень полезно и сложнее).

В отличие от Windows. Windows начинала без управления пакетами, и каждое приложение где-то создавало свой собственный каталог. Все файлы обычно находятся внутри этого каталога: программы, статические данные, пользовательские данные, ... За исключением иногда библиотек, программы которых попадают в общий системный каталог, не обращая внимания на конфликты ("DLL hell"). Со временем Windows стала многопользовательской, что потребовало отделения пользовательских каталогов от системных. Windows также создала центральное место для конфигурационных файлов (Unix's /etc) и некоторых системных данных (Unix's /var), реестр. Это скорее исторический артефакт, во многом из-за отсутствия управления пакетами и ранней истории как однопользовательской системы. Подход Windows имеет много ограничений: он не позволяет программным пакетам легко взаимодействовать. Например, большинство установленных программ не попадают в путь поиска команд по умолчанию, поэтому они плохо взаимодействуют с любой формой написания сценариев. Инсталляторы обычно предоставляют иконку меню в виде особого случая - выпадающего в отдельном системном каталоге (à la Unix!).

Ограничением подхода Unix является то, что он не позволяет легко сосуществовать нескольким версиям пакета, что особенно проблематично во время обновления пакета. Лучшим способом получить лучшее из обоих миров было бы распаковать каждый пакет в свой собственный каталог (структура /opt) и создать леса символических ссылок из каталогов пакетов в структуру /usr. Это то, что делает программное обеспечение типа stow.

Подводя итог, можно сказать, что подход Unix упрощает использование файлов, управление файлами и позволяет пакетам взаимодействовать; для этого требуется программное обеспечение для управления пакетами, но это все равно желательно. Подход Windows упрощает управление пакетами вручную, но для получения полезной функциональности необходимо ориентироваться на модель Unix.

11
27.01.2020, 20:04

Основным преимуществом, не упомянутым выше, и одной из исторических причин такой структуры является физическое разделение нескольких томов / дисков, доступных на разных этапах загрузки. процесс.

Еще одним преимуществом является то, что различные каталоги могут быть смонтированы на томах / файловых системах, которые оптимизированы для данных каталога. Например, tmpfs для / run ; и / sbin на носителе / ​​ПЗУ только для чтения.

Также тома могут быть локальными или удаленными, личными или общими.

Наконец, см. Application Directory для альтернативного подхода (упомянутого @fluffy), используемого в UNIX (OS X .app ), Linux ( ROX Desktop ) и Windows ( PortableApps.com ).

3
27.01.2020, 20:04

Теги

Похожие вопросы