Для технической поддержки просьба обращаться в Telegram канал CerediraAutomation.
Ошибки и предложения по улучшению можно публиковать на странице проблем.
CerediraFHS - это стандарт структуры хранения каталогов и файлов внутри каталога операционной системы (ОС) Windows.
Данный стандарт будет удобен для IT-специалистов при выполнении задач по разработке, тестированию и администрированию программного обеспечения на небольших проектах.
CerediraFHS разработан для решения таких проблем, как:
- Пользовательские данные в системе хранятся на Рабочем столе, в каталоге Загрузки, в каталоге пользователя, в каталоге Документы, в корне диска C:\ и в каталогах на других дисках. Если не уделять должное внимание структуризации файлов на устройстве, то рабочие файлы по разным проектам, личные файлы и временные файлы лежат в пользовательских каталогах в беспорядке.
- Из-за большого количество доступных пользователю каталогов, сложно настроить резервное копирование данных. А в таких каталогах, как каталог пользователя, содержаться каталоги AppData и другие, за счет чего размер "важных" данных может исчисляться гигабайтами.
- Отсутствие возможности переноса программного обеспечения (ПО) между устройствами, так как запись ПО в стандартный каталог C:\Program Files\ без прав администратора недоступна, а запись в другой каталог приводит к актуализации путей в связном ПО.
- Каждое программное обеспечение по-разному хранит на устройстве свои конфигурационные файлы, из-за чего делать быстрый переход между устройствами является проблематичным.
- При необходимости установки разных версий ПО может затронуть другое настроенное ПО.
При использовании CerediraFHS можно получить следующие плюсы:
- Централизация всего важного на устройстве в единый каталог - отсутствие беспорядка
- Простота переноса между устройствами - архивируется и копируется 1 каталог
- Возможность разделить корневой каталог на отдельные части для дистрибьюции - уменьшение размера распространяемых частей
- Простота резервного копирования - из-за жесткой структуры, легко настроить удобные правила
- Простор для экспериментов - можно скопировать корневой каталог целиком, и модифицировать копию
- Для каждого дистрибутива свои стабилизированные версии ПО
- Простота переноса между устройствами - архивируется и копируется 1 каталог
- Возможность писать скрипты и руководства, опираясь на жесткую структуру каталогов и файлов
- При установке ПО в соответствии с предлагаемым стандартом, появляется возможность переносимости ПО
- Для пользователей Linux - знакомая структура каталогов и файлов
- При оказании удаленной технической помощи - удобство для эксперта оперировать в знакомом окружении
- При использовании данного репозитория, возможность ведения истории Git - контроль версий рабочего каталога. Все каталоги и файлы, которые необходимо контролировать, нужно вручную добавить в правила .gitignore в корне данного репозитория. По умолчанию, кроме самой структуры и файлов README.md - ничего не подвергается контролю версий.
При разработке решения за основу была взята общая логика из стандарта UNIX FHS и модифицирована для использования в произвольном каталоге ОС Windows.
В распакованном виде выглядит как на изображении ниже:
В CerediraFHS все файлы и каталоги находятся внутри корневого каталога, которым является любой каталог в ОС Windows. Для простоты, этот каталог лучше размещать в корне дисков, и не добавлять пробелы в имя каталога. В целом, такой каталог можно назвать дистрибутивом.
Каталог | Описание |
---|---|
C:\CerediraFHS | Корневой каталог, содержащий всю файловую иерархию. |
bin | Основные утилиты, необходимые в рамках этого дистрибутива |
etc | Каталог конфигурационных файлов для утилит |
etc\install | Каталог скриптов, для развертывания данного дистрибутива |
etc\ssl | Каталог для сертификатов, необходимых при работе с данным дистрибутивом |
home | Каталог для важных пользовательских файлов |
lib | Каталог для основных библиотек, необходимых для работы утилит из данного дистрибутива |
man | Каталог для инструкций данного дистрибутива |
opt | Каталог для возможности добавления пользователем личных утилит |
tmp | Каталог для неважных временных файлов |
var | Каталог для изменяемых файлов используемых утилит |
var\log | Каталог для файлов логов |
MDData | Каталог для хранения мультимедиа файлов для справок README.md |
CerediraFHS - корневой каталог проекта
│ .gitignore - файл правил игнорирования для Git
│ LICENSE - файл с описанием лицензии
│ README.md - файл подробного описания проекта
│
├───.git - каталог системы контроля версий Git
│
├───bin
│ README.md - файл подробного описания назначения каталога
│
├───etc
│ │ README.md - файл подробного описания назначения каталога
│ │
│ ├───install
│ │ │ README.md
│ │ │
│ │ └───CerediraFHS - каталог с именем компонента
│ │ │ CreateContextMenu.bat - скрипт установки основных утилит в контекстное меню проводника Windows
│ │ │ DeleteComponent.bat - скрипт удаления всех файлов и каталогов данного компонента
│ │ │ DeleteContextMenu.bat - скрипт удаления контекстношго меню проводника Windows для данного компонента
│ │ │
│ │ └───version - каталог с версиями данного компонента
│ │ 1.0.0 - файл-маркер версии компонента
│ │
│ └───ssl
│ README.md - файл подробного описания назначения каталога
│
├───home
│ README.md - файл подробного описания назначения каталога
│
├───lib
│ README.md - файл подробного описания назначения каталога
│
├───man
│ README.md - файл подробного описания назначения каталога
│
├───opt
│ README.md - файл подробного описания назначения каталога
│
├───tmp
│ README.md - файл подробного описания назначения каталога
│
└───var
│ README.md - файл подробного описания назначения каталога
│
└───log
README.md - файл подробного описания назначения каталога
Для каждого проекта желательно использовать отдельный каталог со своей структурой и своим набором утилит. Даже если это будет вести к дублированию утилит предназначенных для одних и тех же задач. Текстовые редакторы, утилиты для редактирования файлов и т.п. будут отдельно для каждого рабочего проекта (и отдельно для личного использования).
- Не любые утилиты можно заставить работать с такой структурой каталогов. Это необходимо явно описывать в README.md файлах, и учитывать при создании резервных копий. Как вариант решения проблемы, скриптами переносить все важные каталоги из каталога bin, в каталог data перед архивацией и распространением.
- Допустим, есть версия дистрибутива 1.0, новая версия с минорными исправлениями 1.0.1 распаковывается поверх текущей с заменой всех файлов, но файлы, которые например необходимо было удалить из версии 1.0 для корректной работы версии 1.0.1, необходимо будет удалять скриптами или вручную, и просить сделать это пользователя. На данный момент нет удобного механизма решения этой проблемы.
Проект CerediraAutomation построен с использованием стандарта CerediraFHS, он состоит из множества компонентов, каждый из которых содержит необходимые для своей работы каталоги. Необходимые компоненты распаковываются в корень каталога с CerediraFHS и получается уникальный для дальнейшей работы дистрибутив.