Как хранится время создания файла в разных ФС?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
MiK13
Сообщения: 1164
ОС: Linux Debian

Как хранится время создания файла в разных ФС?

Сообщение MiK13 »

В рамках нашей работы сегодня начальник решил проверить создание копий экрана (сделали, что по нажатию PrtScr в каталоге ./Images/ сохраняется "снимок" экрана)
И вот я нажимаю PrtScr, затем смотрю, что в каталоге и вижу, что у файла время 0:44. Удивляюсь, но вспоминаю, что при установке системы я не задал часовой пояс (из-за проблем с отображением кириллицы). Вызываю dpkg-reconfigure tzdata, ставлю Минск. И вижу, что у файла стало время 9:44. Но тут у начальника возникает "законный" вопрос: "Получается, что время файла зависит от часового пояса? Но это же неправильно!"
Дальше ещё интереснее. Копирую этот файл на флешку, на разделы ext3 и FAT32. Время на обоих разделах -- 9:44.
Копирую этот файл на ещё одну флешку (с FAT32). Идём на компьютер с Windows, вставляем флешку -- у файла 6:44.
Более того, на той флешке, где на разделе FAT32 на рабочем компьютере показывалось время 9:44, на моём компьютере (с Linux) показывается время тоже 6:44
Начальнику это очень не нравится. Говорит, что невозможно понять, когда на самом деле был сзелан снимок экрана.

Но что для меня непонятно, так это то, что на МОЁМ компьютере на флешке FAT32 у файла показывается время 6:44, а на рабочем -- 9:44. Хотя часовой пояст и там и там стоит +0300.
Для поверки в 12:52 создал маленький файл. Пошёл на компьютер с АРМом -- mc время не показывает, показывает только дату. Команда ls --full-time показала, что у этого файла время 2017-04-26 15:52:30.000000000 +0300
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как хранится время создания файла в разных ФС?

Сообщение Bizdelnick »

MiK13 писал(а):
26.04.2017 13:05
у файла стало время

У файла ничего не "становится" и не меняется. Меняется только то, в каком виде время отображается.

Shell

Код: Выделить всё

% touch file
% date -r file
Ср апр 26 13:12:26 MSK 2017
% date -ur file
Ср апр 26 10:12:26 UTC 2017
% date -r file +%s
1493201546
$

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1164
ОС: Linux Debian

Re: Как хранится время создания файла в разных ФС?

Сообщение MiK13 »

Bizdelnick писал(а):
26.04.2017 13:16
MiK13 писал(а):
26.04.2017 13:05
у файла стало время

У файла ничего не "становится" и не меняется. Меняется только то, в каком виде время отображается.

Я это понимаю. И основная моя задача сейчас -- понять, почему на моём компьютере время этого файла отображеется как 6:44, а на компьютере АРМа -- как 9:44.
То есть я предполагаю, что это из-за того, что, устанавливая Linux я когда-то, вероятно, указал использовать текущее время, а не UTC, так как на нём стоит ещё винда (иногда вынужден ею пользоваться). Но как проверить это я не знаю. Собираюсь в мае поставить Jessie (если не выйдет Stretch, сейчас стоит Wheezy). Тогда буду это знать точно.
Ну и второе -- как убедить начальника, что в том, что в отображении времени создания файла в зависимости от текущего часового пояся ничего плохого нет. Тем более, что время создания файла входит в его имя.
Подозреваю, что винда будет отображать время в UTC.
Спасибо сказали:
Kopilov
Сообщения: 947
ОС: [K]Ubuntu, Debian

Re: Как хранится время создания файла в разных ФС?

Сообщение Kopilov »

Чтобы научить Винду работать с UTC, есть такой ключик реестра:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как хранится время создания файла в разных ФС?

Сообщение Bizdelnick »

MiK13 писал(а):
26.04.2017 13:58
устанавливая Linux я когда-то, вероятно, указал использовать текущее время, а не UTC

Какое время используют аппаратные часы — не имеет никакого значения.

MiK13 писал(а):
26.04.2017 13:58
Ну и второе -- как убедить начальника, что в том, что в отображении времени создания файла в зависимости от текущего часового пояся ничего плохого нет.

Используйте для работы со временем секунды с начала эпохи.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как хранится время создания файла в разных ФС?

Сообщение Bizdelnick »

MiK13 писал(а):
26.04.2017 13:05
Но что для меня непонятно, так это то, что на МОЁМ компьютере на флешке FAT32 у файла показывается время 6:44, а на рабочем -- 9:44. Хотя часовой пояст и там и там стоит +0300.
Для поверки в 12:52 создал маленький файл. Пошёл на компьютер с АРМом -- mc время не показывает, показывает только дату. Команда ls --full-time показала, что у этого файла время 2017-04-26 15:52:30.000000000 +0300

Это говорит о том, что на Вашем компьютере время настроено неправильно — выставлен часовой пояс UTC, но при этом часы используют UTC+3. Это может быть следствием сочетания двух ошибок: неправильная установка часового пояса (UTC вместо UTC+3) и неправильная интерпретация показаний аппаратных часов (как если бы они были выставлены по UTC, хотя по факту там локальное время). Первое лечится dpkg-reconfigure tzdata, второе — echo 'HWCLOCKPARS=--localtime' >> /etc/default/hwclock.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1164
ОС: Linux Debian

Re: Как хранится время создания файла в разных ФС?

Сообщение MiK13 »

Bizdelnick писал(а):
26.04.2017 23:18
MiK13 писал(а):
26.04.2017 13:05
Но что для меня непонятно, так это то, что на МОЁМ компьютере на флешке FAT32 у файла показывается время 6:44, а на рабочем -- 9:44. Хотя часовой пояст и там и там стоит +0300.
Для поверки в 12:52 создал маленький файл. Пошёл на компьютер с АРМом -- mc время не показывает, показывает только дату. Команда ls --full-time показала, что у этого файла время 2017-04-26 15:52:30.000000000 +0300

Это говорит о том, что на Вашем компьютере время настроено неправильно — выставлен часовой пояс UTC, но при этом часы используют UTC+3. Это может быть следствием сочетания двух ошибок: неправильная установка часового пояса (UTC вместо UTC+3) и неправильная интерпретация показаний аппаратных часов (как если бы они были выставлены по UTC, хотя по факту там локальное время). Первое лечится dpkg-reconfigure tzdata, второе — echo 'HWCLOCKPARS=--localtime' >> /etc/default/hwclock.

Подозреваю, что здесь что-то более сложное. Или, точнее, более хитрое.
Нашёл в каталоге флешки запись. относящуюся к этому файлу. Вот её "дамп":

Код: Выделить всё

32 30 31 37 30 34 7E 31 50 4E 47  20  00    00  88 46  9A 4A  9B 4A  00 00  82 35  9A 4A  62 49  C4 DD 01 00

И вот что получил при расшифровке:
DIR_CrtTimeTenth = 00
DIR_CrtTime = 88 46, или 0x4688 = 8:52:16
DIR_CrtDate = 9A 4A, или 0x4A9A = 2017-04-26
DIR_LstAccDate = 9B 4A, или 0z4A9B = 2017-04-27
DIR_FstClusHI = 00 00 -- номер первого кластера, старшие два байта
DIR_WrtTime = 82 35, или 0x3582 = 6:44:04
DIR_WrtDate = 9A 4A2, или 0x4A9A = 2017-04-26
DIR_FstClusLO = 62 49 -- файл начинается с кластера 0x4962
DIR_FileSize = C4 DD 01 00 -- файл имеет размер 122308
И именно такие значения показывала команда ls на работе.
Дома у меня команда ls показала немного другую информацию: (lt -- алиас для ls --full-time)

Код: Выделить всё

mik13@MD:/run/shm/a$ lt 20*
-rwxr-xr-x 1 root root 122308 2017-04-26 06:43:38.000000000 +0300 20170426-04405-0-28.png
mik13@MD:/run/shm/a$ lt -c 20*
-rwxr-xr-x 1 root root 122308 2017-04-26 08:51:50.000000000 +0300 20170426-04405-0-28.png
mik13@MD:/run/shm/a$ lt -u 20*
-rwxr-xr-x 1 root root 122308 2017-04-26 23:59:34.000000000 +0300 20170426-04405-0-28.png

Отличие в том, что я часовой пояс дома установил в right, а не posix. То есть он учитывает високосные секунды, которых набежало 26.
Общее впечатление: "рабочий" компьютер (с АРМом) записывает на флешку время UTC. но показывает его с учётом текущего часового пояса. А вот на моих компьютерах (на работе и дома) записывается локальное время.
Bizdelnick писал(а):
26.04.2017 23:18
echo 'HWCLOCKPARS=--localtime' >> /etc/default/hwclock.
Посмотрел на моём компьютере -- файл /etc/default/hwclock есть, но в нём все строки "закомментированы" знаком '#' в начале. А на компьютере с АРМом такого файла вообще нет (может быть в этом дело?)

P.S. Имя файла "20170426-04405-0-28.png" говорит о том, что он был создан 2017-04-26, в 0:44:05 -- на компьютере стоял часовой пояс -0600
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как хранится время создания файла в разных ФС?

Сообщение Bizdelnick »

MiK13 писал(а):
28.04.2017 02:13
Подозреваю, что здесь что-то более сложное. Или, точнее, более хитрое.

А не надо подозревать. Вы проверьте, это же просто. date что показывает?

MiK13 писал(а):
28.04.2017 02:13
Нашёл в каталоге флешки запись. относящуюся к этому файлу. Вот её "дамп"

Мне это абсолютно ни о чём не говорит, и разбираться в нюансах работы FAT мне неинтересно.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить