Анықтамалықтардың көлемі біздің күш салуымызға тұрарлық емес

Бұл мүлдем пайдасыз, практикалық қолдануда қажетсіз, бірақ *nix жүйелеріндегі каталогтар туралы күлкілі шағын пост. Бүгін жұма.

Сұхбат кезінде инодтар, барлығы файлдар туралы жиі скучно сұрақтар туындайды, оған аз адамдар саналы түрде жауап бере алады. Бірақ сәл тереңірек қазсаңыз, қызықты нәрселерді таба аласыз.

Постты түсіну үшін бірнеше тармақ:

  • бәрі файл. каталог та файл болып табылады
  • inode файлдағы метадеректерді сақтайды, бірақ файл атауы онда сақталмайды
  • файл атауы каталог деректерінде сақталады
  • Каталогтың өлшемі, ls ішінде көрсетілгендей және әдепкі бойынша 4Кб, каталогтағы файлдардың санына және олардың атауларының ұзындығына байланысты.
  • Әлбетте, файлдар неғұрлым көп болса, каталог өлшемі соғұрлым үлкен болады

Енді қызықты жер: біз миллион файлы бар каталог жасаймыз, каталогтың өлшемін тексереміз, содан кейін барлық файлдарды жойып, каталогтың өлшемін қарастырамыз.

$ mkdir niceDir && cd niceDir
# в зависимости от скорости носителя, следующая команда может занять 2-10 минут
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug  2 13:37 .

Көріп отырғаныңыздай, каталог өлшемі өзгерген жоқ, бірақ ол көрінген сияқты :)

Каталог өлшемін (оны жоймай) fsck (және -D опциясы) арқылы ажыратылған күйде ғана түзете аласыз.

Бірақ мен неліктен бұлай болғанын іздеуге барғанымда, мұндай мінез-құлық 10 жыл бұрын болды талқыланды lkml. Әзірлеушілердің пікірінше, түзету жай ғана күш салуға тұрарлық емес.

Ақпарат көзі: www.habr.com

пікір қалдыру