Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Копия СПЗ (копия)

.doc
Скачиваний:
1
Добавлен:
19.11.2019
Размер:
64.51 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА 2 Изучение файловой системы в ОС UNIX

Лабораторная работа 1.

2.1 Цель работы

Исследование команд навигации в файловой системе, команд управления файлами и каталогами, создания новой файловой системы, монтирования и размонтирования ФС. Ознакомление с командами связи, создания специальных файлов, сопровождения и восстановления ФС и создания архивов на ленте или диске.

2.2 Основные команды их значение

cd: cd [-L|-P] [dir] − Cменяет текущую директорию на DIR.

-P использовать физическую структуру вместо символических ссылок; -L

восстанавливает тип символических ссылок.

pwd – вывод текущей директории

СИНТАКСИС

pwd [OPTION]

ОПИСАНИЕ

Вывести полный путь к текущему каталогу.

more – фильтр для просмотров

СИНТАКСИС

more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...]

ОПИСАНИЕ

Для просмотра текста по страницам.

more - выводит создержимое текстового файла по частям

more +linenumber - выводится текст со строки linunumber

more +pattern - выводится текст за 2 строки до выражения pattern

more -n - размер экрана в строках под текст

more -w - ожидание завершения пользователем программы

find [ключи] [path...] [выражение] − поиск файлов и выполнение над

ними каких-либо действий.

-P − никогда не следовать по символическим ссылкам.

-L − использовать символические ссылки.

-type c

Файлы типа c:

b − спец. блочный

c − спец. символьный

d − директория

Действия:

-delete − Удалить файлы

-exec command ; − Выполнить command

-fprint file

grep [опции] строка [FILE...]

grep [опции] [-e строка | -f FILE] [FILE...] − поиск по набору строк

cat [опции] [FILE] − объединяет файлы или стандартный ввод в

стандартный

grep -w - поиск по словам

grep -r - рекурсивный поиск

grep -n - добавляет номер строки, где найдено вхождение

cat > - перенаправление стандартного вывода

cat >> - перенаправление стандартного вывода, без перезаписи, добавление

cat < - перенаправление стандартного ввода

cat -n - количество выведенных строк

chmod:

a - все категории пользователей;

u - владелец;

g - группа;

o - все пользователи;

"+" или "-" - наличие или отсутствие права;

"=" - присвоить право, вне зависимости было оно или нет ранее

право - одно из трех прав:

r - право на чтение;

w - право на запись;

x - право на выполнение;

chown - синтаксис аналогичен

для выяснения имени текущего пользователя можно использовать whoami

chgrp - аналогичен двум предыдущим

* - изменить атрибуты всех файлов в каталоге

mkfs [ -V ] [ -t тип ] [ параметры ] файл [ блоки ]

-t - указание типа

-m - резервное место, в процентах

mount

-t - указание типа

-o - смонтировать iso-образ

tar:

-A, --catenate, --concatenate

склеить файлы tar в один архив

-c, --create

создать новый архив

-d, --diff, --compare

найти различия между архивом и файловой системой

--delete

удалить из архива (не применяется к магнитным лентам!)

-r, --append

добавить файлы в конец архива

-t, --list

показать содержимое архива

-u, --update

добавить только новые версии файлов файлов

-x, --extract, --get

извлечь файлы из архива

mknod имя [b] [c] старший_номер младший_номер

b - создать файл блочного устройства (буферизованный)

c, u - создать файл символьного устройства (небуферизованный)

p - создать именованный канал

-m, --mode=РЕЖИМ установить РЕЖИМ доступа

2.3 Результаты выполнения работы

/*

* Structure of an inode on the disk

*/

struct ext3_inode {

__le16 i_mode; /* File mode */ //тип или режим файла

__le16 i_uid; /* Low 16 bits of Owner Uid */ //Последние 16 бит идентификатора пользователя

__le32 i_size; /* Size in bytes */ //Размер файла

__le32 i_atime; /* Access time */ //Время доступа(последнее)

__le32 i_ctime; /* Creation time */ //Время создания

__le32 i_mtime; /* Modification time */ //Время изменения

__le32 i_dtime; /* Deletion Time */ // ?

__le16 i_gid; /* Low 16 bits of Group Id */ //Последние 16 бит идетификатора группы

__le16 i_links_count; /* Links count */ //Количество ссылок

__le32 i_blocks; /* Blocks count */ //Количество блоков

. __le32 i_flags; /* File flags */ //Флаги файла

union {

struct {

__u32 l_i_reserved1; //Зарезервированое место1, на дополнительные нужды структуры

} linux1;

struct {

__u32 h_i_translator; //Зарезервированое место1, на дополнительные нужды структуры

} hurd1;

struct {

__u32 m_i_reserved1; //Зарезервированое место1, на дополнительные нужды структуры

} masix1;

} osd1; /* OS dependent 1 */

__le32 i_block[EXT3_N_BLOCKS];/* Pointers to blocks */ //указатели на блоки хранения

__le32 i_generation; /* File version (for NFS) */ //Версия файла

__le32 i_file_acl; /* File ACL */

__le32 i_dir_acl; /* Directory ACL */

__le32 i_faddr; /* Fragment address */

union {

struct {

__u8 l_i_frag; /* Fragment number */

__u8 l_i_fsize; /* Fragment size */

__u16 i_pad1;

__le16 l_i_uid_high; /* these 2 fields */

__le16 l_i_gid_high; /* were reserved2[0] */

__u32 l_i_reserved2;

} linux2;

struct {

__u8 h_i_frag; /* Fragment number */

__u8 h_i_fsize; /* Fragment size */

__u16 h_i_mode_high;

__u16 h_i_uid_high;

__u16 h_i_gid_high;

__u32 h_i_author;

} hurd2;

struct {

__u8 m_i_frag; /* Fragment number */

__u8 m_i_fsize; /* Fragment size */

__u16 m_pad1;

__u32 m_i_reserved2[2];

} masix2;

} osd2; /* OS dependent 2 */

__le16 i_extra_isize;

__le16 i_pad1;

};

=========================================================================================

/*

* Structure of a directory entry

*/

#define EXT3_NAME_LEN 255

struct ext3_dir_entry {

__le32 inode; /* Inode number */ //айнод

__le16 rec_len; /* Directory entry length */ //

__le16 name_len; /* Name length */ //

char name[EXT3_NAME_LEN]; /* File name */

};

/*

* The new version of the directory entry. Since EXT3 structures are

* stored in intel byte order, and the name_len field could never be

* bigger than 255 chars, it's safe to reclaim the extra byte for the

* file_type field.

*/

struct ext3_dir_entry_2 {

__le32 inode; /* Inode number */ //порядковый номер inode файла

__le16 rec_len; /* Directory entry length */ //длина записи в байтах

__u8 name_len; /* Name length */ //имя файла

__u8 file_type;

char name[EXT3_NAME_LEN]; /* File name */ //длина имени файла

};

============================================================================================

struct ext3_super_block {

/*00*/ __le32 s_inodes_count; /* Inodes count */ //Количество дескрипторов

__le32 s_blocks_count; /* Blocks count */ //Количество блоков

__le32 s_r_blocks_count; /* Reserved blocks count */

__le32 s_free_blocks_count; /* Free blocks count */ //Количество свободных блоков

/*10*/ __le32 s_free_inodes_count; /* Free inodes count */ //Количество свободных дескрипторов

__le32 s_first_data_block; /* First Data Block */ //Первый блок данных

__le32 s_log_block_size; /* Block size */ //Размер блока

__le32 s_log_frag_size; /* Fragment size */ //Размер фрагмента

/*20*/ __le32 s_blocks_per_group; /* # Blocks per group */

__le32 s_frags_per_group; /* # Fragments per group */

__le32 s_inodes_per_group; /* # Inodes per group */

__le32 s_mtime; /* Mount time */ //Время монтирования

/*30*/ __le32 s_wtime; /* Write time */ //Время записи

__le16 s_mnt_count; /* Mount count */ //Количество раз монтирования

__le16 s_max_mnt_count; /* Maximal mount count */ //Максимальное количество раз монтирования

__le16 s_magic; /* Magic signature */

__le16 s_state; /* File system state */ //Состояние ФС

__le16 s_errors; /* Behaviour when detecting errors */

__le16 s_minor_rev_level; /* minor revision level */

/*40*/ __le32 s_lastcheck; /* time of last check */ //Время последней проверки

__le32 s_checkinterval; /* max. time between checks */ //Максимальное время между проверками

__le32 s_creator_os; /* OS */

__le32 s_rev_level; /* Revision level */

/*50*/ __le16 s_def_resuid; /* Default uid for reserved blocks */

__le16 s_def_resgid; /* Default gid for reserved blocks */

/*

* These fields are for EXT3_DYNAMIC_REV superblocks only.

*

* Note: the difference between the compatible feature set and

* the incompatible feature set is that if there is a bit set

* in the incompatible feature set that the kernel doesn't

* know about, it should refuse to mount the filesystem.

*

* e2fsck's requirements are more strict; if it doesn't know

* about a feature in either the compatible or incompatible

* feature set, it must abort and not try to meddle with

* things it doesn't understand...

*/

__le32 s_first_ino; /* First non-reserved inode */

__le16 s_inode_size; /* size of inode structure */ //Размер мтруктуры дескриптора

__le16 s_block_group_nr; /* block group # of this superblock */ Номер группы блока этого суперблока

__le32 s_feature_compat; /* compatible feature set */

/*60*/ __le32 s_feature_incompat; /* incompatible feature set */

__le32 s_feature_ro_compat; /* readonly-compatible feature set */

/*68*/ __u8 s_uuid[16]; /* 128-bit uuid for volume */

/*78*/ char s_volume_name[16]; /* volume name */

/*88*/ char s_last_mounted[64]; /* directory where last mounted */

/*C8*/ __le32 s_algorithm_usage_bitmap; /* For compression */

/*

* Performance hints. Directory preallocation should only

* happen if the EXT3_FEATURE_COMPAT_DIR_PREALLOC flag is on.

*/

__u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/

__u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */

__le16 s_reserved_gdt_blocks; /* Per group desc for online growth */

/*

* Journaling support valid if EXT3_FEATURE_COMPAT_HAS_JOURNAL set.

*/

/*D0*/ __u8 s_journal_uuid[16]; /* uuid of journal superblock */

/*E0*/ __le32 s_journal_inum; /* inode number of journal file */

__le32 s_journal_dev; /* device number of journal file */

__le32 s_last_orphan; /* start of list of inodes to delete */

__le32 s_hash_seed[4]; /* HTREE hash seed */

__u8 s_def_hash_version; /* Default hash version to use */

__u8 s_reserved_char_pad;

__u16 s_reserved_word_pad;

__le32 s_default_mount_opts;

__le32 s_first_meta_bg; /* First metablock block group */

__le32 s_mkfs_time; /* When the filesystem was created */

__le32 s_jnl_blocks[17]; /* Backup of the journal inode */

/* 64bit support valid if EXT4_FEATURE_COMPAT_64BIT */

/*150*/ __le32 s_blocks_count_hi; /* Blocks count */

__le32 s_r_blocks_count_hi; /* Reserved blocks count */ //Зарезервированные блоки

__le32 s_free_blocks_count_hi; /* Free blocks count */ //Количество сваободных блоков

__le16 s_min_extra_isize; /* All inodes have at least # bytes */

__le16 s_want_extra_isize; /* New inodes should reserve # bytes */

__le32 s_flags; /* Miscellaneous flags */

__le16 s_raid_stride; /* RAID stride */

__le16 s_mmp_interval; /* # seconds to wait in MMP checking */

__le64 s_mmp_block; /* Block for multi-mount protection */

__le32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/

__u8 s_log_groups_per_flex; /* FLEX_BG group size */

__u8 s_reserved_char_pad2;

__le16 s_reserved_pad;

__u32 s_reserved[162]; /* Padding to the end of the block */

};

2.4 Выводы

В результате выполнения лабораторной работы была изучена работа с ФС UNIX система, также были рассмотрены несколько ФС, которые используются или использовались в системах UNIX, у всех у них есть есть свои плюсы и свои миинусы.