Katalogu izmērs nav mūsu piepūles vērts

Šis ir pilnīgi bezjēdzīgs, praktiski neizmantojams, bet jautrs neliels ieraksts par direktorijām *nix sistēmās. Taču ir piektdiena.

Darba intervijās bieži iznāk garlaicīgi jautājumi par inodiem un visam ir faili, uz kuriem maz kuri var normāli atbildēt. Bet, ja nedaudz padziļināmies, var atrast interesantas lietas.

Lai labāk izprastu ierakstu, nedaudz tēzu:

  • viss ir fails. arī direktorija ir fails
  • inodā tiek glabāti faila meta dati, bet faila nosaukums tur netiek glabāts
  • faila nosaukums tiek glabāts direktorijas datos
  • direktorijas izmērs, kas tiek rādīts komandrindā ls un pēc noklusējuma ir 4K, ir atkarīgs no failu skaita direktorijā un viņu nosaukumu garuma
  • acīmredzami, jo vairāk failu, jo lielāks direktorijas izmērs

Un tagad interesanti: izveidojam direktoriju ar miljonu failu, pārbaudām direktorijas izmēru, pēc tam izdzēšam visus failus un skatāmies uz direktorijas izmēru.

$ mkdir niceDir && cd niceDir
# atkarībā no nesēja ātruma, nākamā komanda var aizņemt 2-10 minūtes
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 lietotājs lietotājs 8.1M 2. aug 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 lietotājs lietotājs 8.1M  2. aug 13:37 .

Kā var pamanīt, direktorijas izmērs nemainījās, lai arī šķiet 🙂

Lai salabotu direktorijas izmēru (bez dzēšanas), var izmantot tikai fsck (un opciju -D) atslēgtā stāvoklī.

Kad sāku meklēt, kāpēc tas ir tā, izrādījās, ka pirms 10 gadiem šādu uzvedību jau apsprieda lkml. Un izstrādātājuprāt, labojums vienkārši nav tā vērts ieguldīties.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster