Објашњене временске ознаке Линук датотеке: атиме, мтиме и цтиме

Када „промењено“ не значи „измењено“? Када говоримо о временским ознакама Линук фајлова. У овом водичу ћемо објаснити како их систем ажурира и како да их сами измените.

Разлика између времена, мтиме и цтиме

Сваки Линук фајл има три временске ознаке: временску ознаку приступа (атиме), модификовану временску ознаку (мтиме) и промењену временску ознаку (цтиме).

Временска ознака приступа је последњи пут када је датотека прочитана. То значи да је неко користио програм да прикаже садржај датотеке или прочита неке вредности из ње. Ништа није уређивано или додато у датотеку. Подаци су референцирани али непромењени.

Измењена временска ознака означава последњи пут када је садржај датотеке измењен. Програм или процес је уређивао или манипулисао датотеком. „Измењено“ значи да је нешто у датотеци измењено или обрисано, или су додати нови подаци.

Промењене временске ознаке се не односе на промене унете у садржај датотеке. Уместо тога, то је време када су метаподаци који се односе на датотеку промењени. Промене дозволе за датотеку, на пример, ажурираће промењену временску ознаку.

Стандардни ект4 Линук систем датотека такође додељује простор за временску ознаку креирања датотеке у својим интерним структурама система датотека, али то још увек није имплементирано. Понекад је ова временска ознака попуњена, али не можете зависити од вредности у њој.

Анатомија временске ознаке

Линук временске ознаке садрже број, а не датум и време. Овај број је број секунди од Уник епоха, што је било у поноћ (00:00:00) 1. јануара 1970. год. Координисано универзално време (УТЦ). Преступне секунде се занемарују у временским ознакама Линука, тако да нису аналогне реалном времену.

Када Линук треба да прикаже временску ознаку, он преводи број секунди у датум и време. Ово људима олакшава разумевање. Локација и временска зона у којој се налази рачунар који прегледа датотеку води конверзију броја секунди у датум и време. Такође осигурава да је месец на исправном језику.

Дакле, колико секунди може бити сачувано у временској ознаци? Много—2,147,483,647, да будемо прецизни. То је велики број, али да ли је довољан? Ако то додате у Уник епоху, а затим га преведете у датум и време, добићете уторак, 19. јануар 2038, у 03:14:07 ујутру. Међутим, пре тога ће нам требати друга шема за временске ознаке.

  Како поставити Винепакс на Линук

Гледање временских ознака

Када користите опцију -л (дуга листа) са лс, као што је приказано испод, можете видети измењену временску ознаку:

ls -l dp.c

Ако желите да видите временску ознаку приступа, користите опцију -лу (време приступа) на следећи начин:

ls -lu dp.c

И на крају, да бисте видели временску ознаку промене, можете користити опцију -лц (време промене); откуцајте следеће:

ls -lc dp.c

Тхе

Временске ознаке изнад показују да је садржај датотеке последњи пут измењен 21. априла 2019. Приступне и измењене временске ознаке су идентичне јер је датотека копирана са другог рачунара на овај 20. јануара 2020. и обе временске ознаке су ажуриране у то време.

До видети све временске ознаке истовремено, користите команду стат на следећи начин:

stat dp.c

Тхе

Временске зоне су наведене на дну екрана. Као што видите, они имају веома прецизну компоненту у делићима секунди. На крају сваке временске ознаке такође видите -0500 или -0400.

Ово су одступања временске зоне. Систем датотека бележи временске ознаке у УТЦ-у и конвертује их у локалну временску зону када их приказује стат. Рачунар који смо користили за истраживање овог чланка је конфигурисан као да се налази у зони источног стандардног времена (ЕСТ) у САД

Та временска зона је пет сати иза УТЦ када је на снази ЕСТ. Међутим, четири сата је иза УТЦ када је на снази источно летње време (ЕДТ). У априлу 2019, када је измењена временска ознака промењена, ЕДТ је био на снази. Због тога две временске ознаке имају помак од пет сати, али измењени има помак од четири сата.

Помаци и временске зоне се не чувају нигде. Не постоји ни иноде нити простор система датотека посвећен чувању ових вредности. Морате да их израчунате у ходу користећи временску ознаку (која је увек у УТЦ времену), локалну временску зону рачунара који приказује датотеку и да ли је летње време било на снази.

Такође видите временску ознаку „Биртх“, која је резервисана за датум креирања датотеке. Ово није имплементирано и видите цртицу „-“ уместо временске ознаке.

Промена временских ознака

Ако желите, можете променити временске ознаке на датотеци. Можете користити команду додира да промените приступне или модификоване временске ознаке, или обоје:

touch -a dp.c

Да бисте поставили нову временску ознаку приступа, користили бисте опцију -а (време приступа). Ова команда поставља временску ознаку приступа на тренутно време рачунара:

stat dp.c

Тхе

Временска ознака приступа се променила, као што се очекивало. Међутим, промењена временска ознака је такође ажурирана; То је нормално.

  Како инсталирати тему Папирус икона на Линук-у

Да бисте променили измењену временску ознаку, можете користити опцију -м (измењено време):

touch -m dp.c
stat dp.c

Тхе

Овог пута су измењене и измењене временске ознаке ажуриране.

Можете користити опцију -д (датум) ако желите истовремено да промените и приступну и измењену временску ознаку. Такође можете да наведете време и датум — нисте ограничени на промену временских ознака на садашњост.

Користићемо следећу команду да поставимо приступ и измењене временске ознаке на 10:30:45 15. јануара 2020:

touch -d "2020-01-15 10:30:45" dp.c
stat dp.c

Сада смо приступ и измењене временске ознаке поставили на датум у прошлости. Промењена временска ознака је такође ажурирана на тренутно време рачунара.

Такође можете користити опцију -р (референца), као што је приказано испод, ако желите да поставите временске ознаке једне датотеке на вредности временске ознаке друге:

touch dp.c -r dice_words.sl3
stat dp.c

Тхе

А онда смо се прилично вратили тамо где смо почели, са мешавином временских ознака -0400 и -0500.

Хајде да урадимо нешто што утиче само на промењену временску ознаку. Користићемо команду цхмод да дамо извршну датотеку извршавање дозвола за све кориснике:

chmod +x dp
stat dp

Тхе

Промењена временска ознака је једина која се ажурирала. То је зато што сама датотека није промењена—није јој се приступало нити јој је било модификовано. Међутим, метаподаци о датотеци су промењени.

Како систем датотека ажурира временске ознаке

Када је систем датотека монтиран, постоје опције које можете користити да одредите како тај систем датотека треба да ради или да се третира. Они се чувају у датотеци /етц/фстаб, која се чита и обрађује у тренутку покретања. Такође можете да подесите опције да диктирате шему коју треба да користе за ажурирање временске ознаке приступа.

Следе неке од најчешћих опција:

стрицтатиме (строго време): Ова опција ажурира временску ознаку приступа датотекама сваки пут када им се приступи. Овим приступом су повезани додатни трошкови, али неки сервери могу имати користи од ове шеме. Има мало предности на десктоп или лаптоп рачунару.
ноатиме (без времена): Ова опција у потпуности онемогућава ажурирање временских ознака приступа датотекама и директоријумима. Међутим, измењене временске ознаке ће се и даље ажурирати.
нодиратитиме (без дир атиме): Ова опција омогућава приступ временским ознакама за ажурирање датотека, али је онемогућава за директоријуме.
релатиме (релативно време): Ова опција ажурира временску ознаку приступа само ако је била стара више од 24 сата или је претходна била старија од тренутне модификоване или промењене временске ознаке. Ово постиже добру равнотежу између ажурирања временских ознака приступа пречесто или не ажурирања уопште.

  11 алата за скенирање Линук сервера на безбедносне пропусте и злонамерни софтвер

Хајде да погледамо /етц/фстаб датотеку за овај рачунар и видимо које су опције подешене:

less /etc/fstab

Тхе

Датотека /етц/фстаб је приказана за нас, као што је приказано испод.

Тхе

Ево садржаја датотеке без омотача:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# 
# / was on /dev/sda1 during installation
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 errors=remount-ro 0 1
/swapfile none swap sw 0 0

Постоје само два уноса, а један од њих је свап датотека, коју можемо занемарити. Други се монтира у корен система датотека ( / ) и био је на уређају /дев/сда1 у време инсталације. То је прва партиција на првом чврстом диску и случајно садржи ект4 систем датотека.

Једина опција која му је прослеђена је еррорс=ремоунт-ро, која говори оперативном систему да поново монтира овај систем датотека као систем само за читање ако постоје грешке при покушају да га монтира као систем датотека за читање и писање.

Дакле, не помиње се како ће се поступати са временском ознаком приступа. Хајде да копамо дубље и проверимо шта /проц/моунтс може да нам каже. Пренећемо излаз из /проц/моунтс кроз греп. Наш стринг за претрагу ће бити „сда“, идентификатор чврстог диска.

Укуцавамо следеће:

cat /proc/mounts | grep "sda"

Сада видимо следеће опције:

рв: Систем датотека ће бити монтиран као систем датотека за читање и писање.
релатиме: Систем датотека ће користити шему „релативног времена“ да ажурира временске ознаке приступа.

Одакле је то дошло? Па, релациона шема се користи у следећим ситуацијама:

Када се користи подразумевана опција /етц/фстаб.
Када се користи опција релатиме /етц/фстаб.
Када се не користе опције временске ознаке приступа у /етц/фстаб, а користите језгро Линука 2.6.30 или новије.

Наш /етц/фстаб унос за ект4 систем датотека није навео ниједну опцију ажурирања временске ознаке приступа, тако да је Линук направио разуман избор и користио релатиме.

Временске ознаке су важне

Временске ознаке нам дају једноставан начин да видимо када је датотеци приступљено, измењено или промењено. Али, што је још важније, они пружају начин за прављење резервних копија и синхронизацију софтвера како би се утврдило које датотеке треба да буду направљене.

Могућност манипулисања временским ознакама ће се показати корисном кад год треба да насилно убедите програм да укључи или игнорише датотеку или скуп датотека.