Написание файловой системы используя FUSE на языке Си
60 000 руб. за проект
Описание работы
Задание:
На смонтированном диске на линуксе должен видеть структуру ФС. (Должен видеть не один файл, а все находящиеся там файлы и директории) .
Структура Файловой системы:
typedef struct NCUTILS2_API NcFsHeader_t
{
uint32_t uint32_null;
uint32_t uint32_fs_version;
uint32_t uint32_fs_total_size;
uint32_t uint32_fs_used_size;
uint32_t uint32_fs_add_start_data_size;
uint32_t uint32_reserved [16];
}NcFsHeader_t;
typedef struct NCUTILS2_API NcFileInfo_t
{
NcFilename_t filename;
uint32_t ftype;// FileTypes
uint32_t useCounter;
uint32_t dtLastDataChange;
uint32_t dtLastReadAccess;
uint32_t dtLastStatusChange;
uint32_t size;
uint32_t handle;
uint32_t childCount;
uint8_t reserved1[16]; // reserved area for future
uint32_t w_Busy_clientNumber;//4
uint32_t r_Busy_clientNumber[MaxConnectedClients_C];//4*8=32
uint8_t reserved2[200]; // reserved area for future
}NcFileInfo_t;
typedef struct NCUTILS2_API NcFileInfoHeader_t
{
uint32_t size;
NcFileInfo_t fileinfo;
}NcFileInfoHeader_t;
#define MaxFilePathLen_C 256
typedef uint16_t NcFilename_t[MaxFilePathLen_C];
В файле это упаковано так:
Сначала файла NcFsHeader_t
потом пропускаем число байт, прочитанных из header.uint32_fs_add_start_data_size
После чего идут последовательно заголовки файлов и данные из них.
Заголовок NcFileInfoHeader_t
Если это папка (header.fileinfo.ftype & FileType_Directory), то следом идёт новая структура NcFileInfoHeader_t
Если это не папка, то следом идет содержимое файла, размером header.fileinfo.size
Потом uint32 контрольной суммы и далее новый NcFileInfoHeader_t.
Так читаем пока файл не кончится.
Приложил картинку, каким образом это должно выглядеть, но должно быть на смонтированном диске на линуксе. На котором я могу увидеть всю это ФС , с ее каталогами и файлами , открывать, читать и изменять их.
Саму ФС, которую надо прочитать не могу прикрепить к заказу( тк кроме фото ничего не могу прикрепить), поэтому оставил ссылку на яндекс диск с ней
https://disk.yandex.ru/d/Ink96Qk45uRHMg
Срок до 20 мая
Задание:
На смонтированном диске на линуксе должен видеть структуру ФС. (Должен видеть не один файл, а все находящиеся там файлы и директории) .
Структура Файловой системы:
typedef struct NCUTILS2_API NcFsHeader_t
{
uint32_t uint32_null;
uint32_t uint32_fs_version;
uint32_t uint32_fs_total_size;
uint32_t uint32_fs_used_size;
uint32_t uint32_fs_add_start_data_size;
uint32_t uint32_reserved [16];
}NcFsHeader_t;
typedef struct NCUTILS2_API NcFileInfo_t
{
NcFilename_t filename;
uint32_t ftype;// FileTypes
uint32_t useCounter;
uint32_t dtLastDataChange;
uint32_t dtLastReadAccess;
uint32_t dtLastStatusChange;
uint32_t size;
uint32_t handle;
uint32_t childCount;
uint8_t reserved1[16]; // reserved area for future
uint32_t w_Busy_clientNumber;//4
uint32_t r_Busy_clientNumber[MaxConnectedClients_C];//4*8=32
uint8_t reserved2[200]; // reserved area for future
}NcFileInfo_t;
typedef struct NCUTILS2_API NcFileInfoHeader_t
{
uint32_t size;
NcFileInfo_t fileinfo;
}NcFileInfoHeader_t;
#define MaxFilePathLen_C 256
typedef uint16_t NcFilename_t[MaxFilePathLen_C];
В файле это упаковано так:
Сначала файла NcFsHeader_t
потом пропускаем число байт, прочитанных из header.uint32_fs_add_start_data_size
После чего идут последовательно заголовки файлов и данные из них.
Заголовок NcFileInfoHeader_t
Если это папка (header.fileinfo.ftype & FileType_Directory), то следом идёт новая структура NcFileInfoHeader_t
Если это не папка, то следом идет содержимое файла, размером header.fileinfo.size
Потом uint32 контрольной суммы и далее новый NcFileInfoHeader_t.
Так читаем пока файл не кончится.
Приложил картинку, каким образом это должно выглядеть, но должно быть на смонтированном диске на линуксе. На котором я могу увидеть всю это ФС , с ее каталогами и файлами , открывать, читать и изменять их.
Саму ФС, которую надо прочитать не могу прикрепить к заказу( тк кроме фото ничего не могу прикрепить), поэтому оставил ссылку на яндекс диск с ней
https://disk.yandex.ru/d/Ink96Qk45uRHMg
Срок до 20 мая
- Файлы
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
Рекомендую!