# 1-Slayd: Kirish - Fayl tizimlari

**Fayl tizimi** operatsion tizimning eng muhim qismlaridan biridir.

Har qanday zamonaviy OT quyidagilarni bajara olishi kerak:
* ma'lumotlarni saqlash;
* fayllarni tashkil qilish;
* tashuvchilarda fayllarni topish;
* fayllarni yaratish va o'chirish;
* tarkibni o'zgartirish;
* kirish huquqlarini nazorat qilish;
* bo'sh joyni boshqarish;
* ma'lumotlar butunligini ta'minlash.

Fayl tizimi ilova va jismoniy qurilma (SSD/HDD) o'rtasidagi vositachi hisoblanadi.

---

# 2-Slayd: Fayl nima?

**Fayl** — bu ma'lumotlarni o'z ichiga olgan yoki ma'lum bir tizim resursini ifodalovchi fayl tizimining nomlangan ob'ekti.

Fayl o'z ichiga quyidagilarni olishi mumkin:
* matn;
* rasm, audio, video;
* dastur;
* ma'lumotlar bazasi;
* konfiguratsiya, arxiv va hokazo.

Foydalanuvchi odatda fayllar bilan tushunarli kataloglar, nomlar va kengaytmalar orqali ishlaydi (masalan, `report.docx`, `photo.jpg`).

---

# 3-Slayd: Fayl tizimi nima?

**Fayl tizimi (File System)** — bu tashuvchida fayllar va kataloglarni tashkil etish, saqlash va boshqarish mexanizmi.

U quyidagilarni belgilaydi:
* fayllar qanday saqlanadi;
* metama'lumotlar qayerda joylashgan;
* bo'sh bloklar qanday aniqlanadi;
* kataloglar qanday tashkil etiladi;
* fayllarni qidirish qanday amalga oshiriladi;
* ruxsatlar qanday o'rnatiladi.

*Eslatma: Jismoniy xotira (SSD/HDD) va Fayl tizimi (NTFS, ext4) bir narsa emas. Bitta SSD ni turli xil fayl tizimlarida formatlash mumkin.*

---

# 4-Slayd: Fayl va uning metama'lumotlari

Fayl tizimi fayl tarkibidan tashqari, unga tegishli qo'shimcha ma'lumotlarni ham saqlaydi. 
Bu ma'lumotlar **metama'lumotlar** deb ataladi.

Metama'lumotlarga quyidagilar kiradi:
* fayl nomi;
* hajmi va turi;
* egasi va kirish huquqlari (ruxsatlar);
* yaratilgan va o'zgartirilgan vaqti;
* ma'lumotlarning diskdagi joylashuvi.

---

# 5-Slayd: Kataloglar va Fayl tizimi daraxti

**Katalog (directory)** — boshqa fayllar va kataloglarni tashkil qilish uchun mo'ljallangan fayl tizimi ob'ekti.

Kataloglar ierarxik tuzilmani (daraxtni) yaratishga imkon beradi.
Linuxda eng yuqori daraja **`/`** belgisi bilan ifodalanadi va u **ildiz katalog (root directory)** deb ataladi.

```text
/
├── bin/
├── etc/
├── home/
│   ├── user1/
│   └── user2/
├── tmp/
```

---

# 6-Slayd: Mutlaq va nisbiy yo'l

**Mutlaq (Absolute) yo'l:**
Ob'ektning joylashuvini to'liq tavsiflaydi. U har doim fayl tizimining ildizidan (`/`) boshlanadi.
*Masalan:* `/home/user/Documents/report.txt`

**Nisbiy (Relative) yo'l:**
Joriy katalogga nisbatan hisoblanadi.
*Masalan, agar joriy katalog `/home/user` bo'lsa:* `Documents/report.txt`

**Linuxdagi maxsus kataloglar:**
* `.` - Joriy katalog
* `..` - Ota katalog (bitta yuqoriga)
* `~` - Joriy foydalanuvchining uy katalogi (home directory)

---

# 7-Slayd: Linuxning mantiqiy tuzilishi (Asosiy kataloglar)

* `/` (Root): Ildiz katalogi, barcha fayllar shuning ichida joylashgan.
* `/home`: Oddiy foydalanuvchilarning shaxsiy kataloglari (masalan, `/home/ahmad`).
* `/root`: Superfoydalanuvchi (`root`) ning shaxsiy katalogi.
* `/etc`: Tizim va xizmatlarning konfiguratsiya fayllari (sozlamalari).
* `/var`: O'zgaruvchan ma'lumotlar, loglar (jurnallar), kesh va navbatlar.
* `/tmp`: Vaqtinchalik fayllar uchun katalog.

---

# 8-Slayd: Linux tuzilishi davomi

* `/usr`: Foydalanuvchi dasturlari, kutubxonalar va umumiy resurslar.
* `/bin`: Tizim ishlashi uchun kerak bo'lgan asosiy bajariluvchi dasturlar.
* `/dev`: Qurilmalarning maxsus fayllari (HDD, SSD, USB va boshqalar).
* `/proc`: Jarayonlar va yadro holati haqida ma'lumot beruvchi virtual fayl tizimi.
* `/sys`: Qurilmalar, drayverlar va apparat komponentlari haqida ma'lumot.
* `/media` va `/mnt`: Tashqi xotira qurilmalarini ulash (mount) uchun kataloglar.

---

# 9-Slayd: Fayl tizimini ulash (Mount)

Linuxda fayl tizimi ma'lum bir katalogga **ulanishi (mounted)** kerak, shundagina uning tarkibidan foydalanish mumkin.

```text
/dev/sdb1 (Fleshka)
    |
    | mount
    v
/mnt/data (Katalog)
```

Fayl tizimlarini ko'rish uchun `mount` yoki `findmnt` buyruqlaridan foydalaniladi.
Diskdagi bo'sh joyni ko'rish uchun: `df -h`

---

# 10-Slayd: Linux fayl tizimlari

* **ext2**: Tarixiy Linux fayl tizimi (jurnallashtirish yo'q).
* **ext3**: Jurnallashtirish qo'shilgan versiya.
* **ext4**: Eng keng tarqalgan zamonaviy fayl tizimi. Katta fayllar va hajmlarni qo'llab-quvvatlaydi.
* **XFS**: Yuqori unumdorlikka ega, asosan serverlarda va katta ma'lumotlar bazalarida ishlatiladi.
* **Btrfs**: Snapshots (nusxalar), copy-on-write kabi zamonaviy funksiyalarga ega fayl tizimi.
* **tmpfs**: Ma'lumotlarni tezkor xotirada (RAM) saqlovchi fayl tizimi (vaqtinchalik fayllar uchun).

---

# 11-Slayd: Jurnallashtirish (Journaling) nima?

**Jurnallashtirish** — bu fayl tizimi o'zgarishlarni diskka yozishdan oldin ularni maxsus jurnalga qayd etish mexanizmi.

* Jarayon: `O'zgarish -> Jurnalga yozish -> Diskka yozish -> Yakunlash`
* **Foydasi:** Agar kompyuter to'satdan o'chib qolsa yoki xatolik yuz bersa, jurnal yordamida tizim tezda o'z holatini tiklay oladi va ma'lumotlar yo'qolishining oldini oladi.

---

# 12-Slayd: Windows fayl tizimlari

* **FAT (FAT32)**: Eski, lekin ko'p qurilmalarda ishlaydigan fayl tizimi. Kamchiligi - 4GB dan katta fayllarni saqlab bo'lmaydi.
* **exFAT**: Microsoft tomonidan fleshkalar va SD-kartalar uchun yaratilgan. Katta fayllarni qo'llab-quvvatlaydi.
* **NTFS**: Windowsning asosiy fayl tizimi. Kirish huquqlari, jurnallashtirish, siqish va shifrlash imkoniyatlariga ega.
* **ReFS**: Yirik serverlar va ma'lumotlar markazlari uchun chidamlilikka yo'naltirilgan zamonaviy fayl tizimi.

---

# 13-Slayd: Linux va Windows fayl tizimlarini solishtirish

| Xususiyat | Linux | Windows |
| :--- | :--- | :--- |
| **Asosiy F.T.** | ext4, XFS, Btrfs | NTFS, exFAT, FAT32 |
| **Ildiz (Root)** | `/` | Odatda disk harflari, masalan `C:\` |
| **Uy katalogi** | `/home` | `C:\Users` |
| **Ulash** | mount | Mount point / Tom (Disk) |
| **Registr** | Katta-kichik harflar farqlanadi (`File.txt` va `file.txt` boshqa) | Odatda farqlanmaydi |
| **Kengaytmalar**| Majburiy emas, turini bildirmaydi | Muhim (masalan `.exe`, `.txt`) |

---

# 14-Slayd: Linuxda ruxsatlar (Permissions)

Linuxda fayl huquqlari **egasi (owner)**, **guruhi (group)** va **boshqalar (others)** uchun belgilanadi.

Misol: `-rwxr-xr--`
* `r` (read) - o'qish huquqi
* `w` (write) - yozish (o'zgartirish) huquqi
* `x` (execute) - ishga tushirish huquqi

Ruxsatlarni o'zgartirish uchun `chmod` buyrug'i ishlatiladi (masalan: `chmod 755 script.sh`).
Fayl egasini o'zgartirish uchun `chown` ishlatiladi.

---

# 15-Slayd: Simvolik va Qattiq havolalar (Links)

**Simvolik havola (Symlink)**: 
* Boshqa fayl yoki katalogga olib boruvchi yorliq (shortcut).
* Yaratish: `ln -s /original/fayl /havola/nomi`

**Qattiq havola (Hard link)**:
* Bitta ma'lumotlar blokiga (inode) ishora qiluvchi qo'shimcha nom.
* Asl fayl o'chirilsa ham, qattiq havola orqali ma'lumotlarga kirish mumkin.
* Yaratish: `ln fayl.txt havola.txt`

---

# 16-Slayd: Inode nima?

**Inode** (Index node) - bu Unix/Linux fayl tizimlarida faylning metama'lumotlarini saqlovchi tuzilma.

Inode quyidagilarni saqlaydi:
* fayl turi va ruxsatlar;
* egasi va o'lchami;
* yaratilish va o'zgarish vaqtlari;
* diskdagi ma'lumotlar bloklariga manzillar.

Fayl nomi va inode bir narsa emas. Bitta inode bir nechta fayl nomlariga (qattiq havolalar orqali) bog'lanishi mumkin.

---

# 17-Slayd: Linuxda fayllar bilan ishlash (1-qism)

Asosiy buyruqlar:
* `pwd` - Joriy katalogni ko'rsatish
* `ls` - Katalog tarkibini ko'rish (`ls -la` batafsilroq)
* `cd <katalog>` - Boshqa katalogga o'tish (`cd ..` orqaga qaytish)
* `mkdir <nom>` - Yangi katalog yaratish (`mkdir -p a/b/c` ichma-ich yaratish)
* `touch <fayl>` - Bo'sh fayl yaratish yoki fayl vaqtini yangilash

---

# 18-Slayd: Linuxda fayllar bilan ishlash (2-qism)

* `cat <fayl>` - Fayl tarkibini o'qish (ekranga chiqarish)
* `less <fayl>` - Katta fayllarni qulay o'qish
* `head <fayl>` / `tail <fayl>` - Faylning boshidan yoki oxiridan qatorlarni ko'rish
* `cp <asl_fayl> <nusxa>` - Faylni nusxalash (`cp -r` katalog uchun)
* `mv <eski> <yangi>` - Faylni ko'chirish yoki qayta nomlash
* `rm <fayl>` - Faylni o'chirish (`rm -r` katalogni o'chirish)

---

# 19-Slayd: Qidirish va Disk haqida ma'lumot

* `find <yo'l> -name "*.txt"` - Fayllarni nomi bo'yicha qidirish
* `grep "so'z" <fayl>` - Fayl ichidagi matndan qidirish
* `df -h` - Diskdagi bo'sh va band joylar haqida umumiy ma'lumot (Gbayt, Mbayt larda)
* `du -sh <katalog>` - Muayyan fayl yoki katalogning qancha joy egallayotganini ko'rish
