2-bo‘lim

Fayl tizimi ierarxiyasi

Ildizdan boshlab har katalogning vazifasi, ramziy havolalar va serverda nima qayerda yotadi.

🕑 19 daqiqa o‘qish 📄 1 293 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Windows dan farq
  2. Ildizda nima bor
  3. Serverdagi eng muhim beshta katalog
  4. Ramziy havolalar
  5. Fayl haqida to'liq ma'lumot
  6. Yo'llar: mutlaq va nisbiy
  7. Katalogda nima borligini ko'rish
  8. Vaqtinchalik fayllar qayerga
  9. Xulosa

Linuxda hamma narsa fayl: matn ham, disk ham, tarmoq qurilmasi ham. Va bu fayllarning hammasi bitta daraxtda - ildizi / bo'lgan daraxtda.

Windows dan farq #

WindowsLinux
C:\, D:\ - har disk alohida ildizBitta ildiz /, disklar unga ulanadi
\ ajratgich/ ajratgich
Kengaytma turni belgilaydiKengaytma - shunchaki nom qismi
Katta-kichik harf farqsizXat.txt va xat.txt - turli fayl
Dastur Program Files daDastur /usr/bin da, sozlama /etc da
Katta-kichik harf farqi - eng ko'p uchraydigan xato

Windowsda ishlagan sayt serverga ko'chirilganda rasmlar yo'qoladi. Sabab: kodda Logo.PNG, faylda esa logo.png.

Windowsda bu ishlaydi, Linuxda esa yo'q.

Yechim - fayl nomlarini doim kichik harfda va bo'shliqsiz yozing: bosh-sahifa-logo.png.

Ildizda nima bor #

Terminal
ls /
Natija
bin
boot
dev
etc
home
init
lib
lib32
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Fayl tizimi daraxti - vazifasi bo'yicha / Dastur va kutubxona /usr/bin barcha buyruqlar /usr/sbin administrator buyruqlari /usr/lib umumiy kutubxonalar /usr/share qo'llanma, ikonka /opt paketdan tashqari dastur Sozlama va ma'lumot /etc barcha sozlamalar /var/log jurnallar /var/lib xizmat ma'lumoti (MySQL) /var/www sayt fayllari /srv xizmat ma'lumoti (muqobil) Foydalanuvchi va vaqtinchalik /home/husanboy oddiy foydalanuvchi uyi /root root ning uyi /tmp qayta yuklashda o'chadi /run ishlayotgan holat (PID) /media, /mnt ulangan disklar Yadro bilan muloqot /proc jarayonlar (soxta FS) /sys qurilmalar (soxta FS) /dev qurilma fayllari /boot yadro va yuklovchi /lost+found buzilgan fayl bo'laklari Serverda ish vaqtingizning 90% i - /etc, /var/log va /var/www da o'tadi
Har katalog bitta savolga javob beradi: "bu yerda nima yotishi kerak?"
Sizning ro'yxatingiz biroz boshqacha bo'lishi mumkin

Yuqoridagi chiqishda init va lost+found bor - ular tekshiruv tizimiga xos. Ubuntu Server da init bo'lmaydi, lost+found esa ext4 fayl tizimi ishlatilsa - bo'ladi.

Bu me'yoriy holat: FHS (Filesystem Hierarchy Standard) asosiy kataloglarni belgilaydi, qolganini distributiv qo'shadi.

Serverdagi eng muhim beshta katalog #

KatalogIchida nimaQachon kirasiz
/etcBarcha sozlama fayllariXizmatni sozlaganda
/var/logJurnallarNimadir buzilganda
/var/wwwSayt fayllariIlova joylashtirganda
/homeFoydalanuvchi fayllariKundalik ish
/usr/binBuyruqlarKamdan-kam
/etc - serverning miyasi

/etc da nechta fayl borligini sanab ko'ring - odatda 300 dan ortiq. Ularning har biri qandaydir xizmatning xatti-harakatini belgilaydi.

Shu sababli /etc ni zaxiraga oling (19-bo'lim). Diskdagi ma'lumot yo'qolsa - uni tiklash mumkin. /etc yo'qolsa - siz serverni noldan sozlashingiz kerak bo'ladi.

Terminal
test "$(ls /etc | wc -l)" -gt 200 && echo "/etc da 200 dan ortiq yozuv bor"
Natija
/etc da 200 dan ortiq yozuv bor

Aniq son tizimga qarab o'zgaradi - va u doimiy emas: useradd kabi buyruqlar /etc/passwd- shaklidagi zaxira nusxalarni yaratadi va o'chiradi, shuning uchun son bir-ikkitaga tebranib turadi.

Ramziy havolalar #

ls -F har nom yoniga uning turini bildiruvchi belgi qo'yadi:

Terminal
ls -F / | head -8
Natija
bin@
boot/
dev/
etc/
home/
init*
lib@
lib32@
BelgiMa'no
/Katalog
@Ramziy havola (symlink)
*Bajariladigan fayl
(yo'q)Oddiy fayl

bin@ - demak /bin haqiqiy katalog emas, u havola:

Terminal
file /bin /sbin /etc/hostname /dev/null
Natija
/bin:          symbolic link to usr/bin
/sbin:         symbolic link to usr/sbin
/etc/hostname: ASCII text
/dev/null:     character special (1/3)

Havola qayerga olib borishini readlink -f aytadi:

Terminal
readlink -f /bin /sbin
Natija
/usr/bin
/usr/sbin
Nega /bin va /usr/bin birlashtirildi

Ilgari /bin da tizim yuklanishi uchun zarur buyruqlar, /usr/bin da qolganlari yotardi. Bu bo'linish /usr alohida diskda bo'lgan davrda mantiqiy edi.

Bugun initramfs bu vazifani bajaradi, shuning uchun Debian, Ubuntu, Fedora va boshqalar /bin ni /usr/bin ga havola qilib qo'ydi. Bu usr-merge deb ataladi.

Amalda buning ma'nosi: /bin/ls va /usr/bin/ls - bitta fayl. Skriptlarda #!/bin/bash ham, #!/usr/bin/bash ham ishlaydi.

Fayl haqida to'liq ma'lumot #

ls -l qisqa ko'rinish beradi, stat esa hammasini:

Terminal
stat -c "%n | %s bayt | %F | %U:%G | %a" /etc/hostname /etc /dev/null
Natija
/etc/hostname | 16 bayt | regular file | root:root | 644
/etc | 12288 bayt | directory | root:root | 755
/dev/null | 0 bayt | character special file | root:root | 666
FormatMa'no
%nFayl nomi
%sHajmi (bayt)
%FTuri
%U:%GEgasi va guruhi
%aRuxsatlar (oktal)
%yO'zgartirilgan vaqti
Katalogning "hajmi" - fayllar hajmi emas

Yuqorida /etc hajmi 12288 bayt. Bu ichidagi fayllar hajmi emas - bu katalog yozuvlar jadvalining o'zi.

Katalog ichidagi haqiqiy hajmni du aytadi:

BuyruqNima o'lchaydi
ls -ld /etcKatalog yozuvi (12 KB)
du -sh /etcIchidagi hamma narsa (bir necha MB)
df -h /Butun fayl tizimi

14-bo'limda disk to'lganda qaysi birini ishlatishni ko'ramiz.

Yo'llar: mutlaq va nisbiy #

Terminal
mkdir -p sayt/public/rasmlar sayt/config
echo "<h1>Salom</h1>" > sayt/public/index.html
echo "port=8080" > sayt/config/server.conf
touch -d "2026-09-01 09:00:00" sayt/public/index.html sayt/config/server.conf

Mutlaq yo'l / dan boshlanadi va qayerdan chaqirilishidan qat'i nazar bir xil joyni ko'rsatadi:

Terminal
head -1 /etc/passwd
Natija
root:x:0:0:root:/root:/bin/bash

Nisbiy yo'l joriy katalogdan hisoblanadi:

Terminal
cd sayt/public
cat index.html
cat ../config/server.conf
Natija
<h1>Salom</h1>
port=8080
YozuvMa'no
/etc/nginxMutlaq - ildizdan
nginx/nginx.confNisbiy - joriy katalogdan
./skript.shAniq joriy katalogdan
../configOta katalogdan
~/loyihaUy katalogidan
- (cd - da)Oldingi katalog
Skriptlarda doim mutlaq yo'l ishlating

Bu skript uy katalogingizda ishlaydi:

Terminal
tar -czf zaxira.tar.gz sayt/

Lekin cron uni boshqa katalogdan ishga tushiradi (13-bo'lim) va u jimgina xato beradi yoki eng yomoni - noto'g'ri katalogni arxivlaydi.

To'g'ri yozuv:

Terminal
tar -czf /var/backups/zaxira.tar.gz /var/www/sayt

Qoida: interaktiv ishda nisbiy yo'l qulay, skriptda faqat mutlaq yo'l.

Katalogda nima borligini ko'rish #

Terminal
find sayt -type f | sort
Natija
sayt/config/server.conf
sayt/public/index.html

find - eng kuchli qidiruv vositasi. Uning asosiy bayroqlari:

BayroqNima qiladi
-type fFaqat oddiy fayllar
-type dFaqat kataloglar
-type lFaqat havolalar
-name "*.log"Nom bo'yicha
-size +100MHajm bo'yicha
-mtime -7Oxirgi 7 kunda o'zgargan
-maxdepth 1Faqat shu darajada
Terminal
find sayt -maxdepth 1 | sort
Natija
sayt
sayt/config
sayt/public

Katalog tuzilmasini ko'rish uchun find ni saralab chiqarish ham yetarli:

Terminal
find sayt | sort | sed 's|[^/]*/|  |g'
Natija
sayt
  config
    server.conf
  public
    index.html
    rasmlar
tree yo'q bo'lsa

Yuqoridagi sed hiylasi tree o'rnatilmagan serverda ish beradi. Agar tree bor bo'lsa - u chiroyliroq:

BuyruqNatija
tree saytTo'liq daraxt
tree -L 2 saytFaqat 2 daraja
tree -d saytFaqat kataloglar

Lekin yangi serverda tree odatda yo'q, find esa doim bor. Shuning uchun find ni bilish muhimroq.

Vaqtinchalik fayllar qayerga #

KatalogQachon tozalanadiNima uchun
/tmpQayta yuklashdaQisqa muddatli fayllar
/var/tmpTozalanmaydiQayta yuklashdan omon qolishi kerak
/runQayta yuklashdaPID fayllar, soketlar
/dev/shmQayta yuklashdaXotiradagi fayl tizimi
Terminal
stat -f -c "%n -> %T" / /tmp /run /dev/shm
Natija
/ -> ext2/ext3
/tmp -> ext2/ext3
/run -> tmpfs
/dev/shm -> tmpfs
tmpfs - diskda emas, xotirada

/run turi tmpfs. Bu shuni anglatadiki, u diskda umuman mavjud emas - fayllar operativ xotirada yotadi.

(stat -f ext4 ni ext2/ext3 deb ataydi - u fayl tizimining oilasini ko'rsatadi, aniq versiyasini emas. Aniq nomni df -T beradi.)

Natijasi:

  • Juda tez (disk kutish yo'q);
  • Qayta yuklashda butunlay yo'qoladi;
  • Operativ xotirani iste'mol qiladi.

Shuning uchun /run ga katta fayl yozmang - siz serverning xotirasini yeyapsiz.

Ba'zi tizimlarda /tmp ham tmpfs bo'ladi. Buni tekshirmasdan /tmp ga 10 GB lik zaxira nusxa yozish - klassik xato.

Amaliy topshiriq
  1. ls / chiqishidagi har katalogni vazifasi bo'yicha guruhlang.
  2. /etc dagi fayllar sonini sanang.
  3. ls -F / bilan uchta havolani toping.
  4. readlink -f bilan ular qayerga borishini aniqlang.
  5. stat bilan /etc/passwd ning egasi va ruxsatini oling.
  6. ls -ld va du -sh chiqishlarini /etc uchun solishtiring.
  7. sayt/public/rasmlar ichiga fayl qo'ying va find bilan toping.
  8. Nisbiy va mutlaq yo'l bilan bir faylni ikki xil oching.
  9. find / -maxdepth 1 -type l bilan ildizdagi havolalarni sanang.
  10. df -hT bilan qaysi kataloglar tmpfs ekanini aniqlang.

Xulosa #

  • Linuxda bitta ildiz /; disklar unga ulanadi.
  • Fayl nomlarida katta-kichik harf farq qiladi.
  • /etc - sozlama, /var/log - jurnal, /var/www - sayt.
  • /etc ni albatta zaxiraga oling.
  • ls -F da / katalog, @ havola, * bajariladigan fayl.
  • /bin bugun /usr/bin ga havola (usr-merge).
  • stat fayl haqida ls dan ancha ko'proq aytadi.
  • Katalog "hajmi" - yozuvlar jadvali, ichidagi fayllar emas.
  • Skriptda doim mutlaq yo'l; nisbiy yo'l - interaktiv ish uchun.
  • /run va ba'zan /tmp - tmpfs, ya'ni xotirada.

Keyingi bo'limda fayl mazmuni bilan ishlaymiz: ko'rish, qidirish va jurnaldan kerakli satrni ajratib olish.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.