Определите точность метки времени файловой системы

Я не видел это некоторое время теперь:

Unix сексуален: кто | grep-i блондинка | дата; CD ~; разархивируйте; касание; полоса; палец; смонтируйтесь; удушье; да; время работы; umount; сон

6
31.01.2017, 21:25
4 ответа

Насколько я знаю, нет никакого места, на котором хранится эта информация. Это кодируется в файловую систему. Однако можно вручную составить список файловых систем и соответствующей точности. Я использовал бы a case оператор для тестирования идентификатора файловой системы против списка файловых систем. Можно сделать значение по умолчанию 1, так как существует очень немного примеров, где точность составляет меньше чем 1 секунду.

Более старые версии FAT и текущие версии zip используют 2 второй точности метки времени от того, что я считал онлайн. Однако я предлагаю, чтобы Вы проверили это на наличие фактологических ошибок.

Можно получить идентификатор filsystem файла со следующей командой.

stat -f --format="%t" $file
6
27.01.2020, 20:24
  • 1
    %i уникально на каждую файловую систему, например, если Вы имеете два ext4 разделы, у каждого будет различный идентификатор. –  Mikel 07.05.2011, 01:05
  • 2
    я отредактировал свой ответ. Хорошая выгода. Я проголосовал бы за Вас, если я мог. –  Stephen 07.05.2011, 06:45
  • 3
    Похож это - наилучшая имеющаяся опция - было бы интересно знать, существует ли авторитетный список как это онлайн. Я не мог найти один с быстрым поиском. –  l0b0 09.05.2011, 14:29

Обычно Вы смогли бы использовать statvfs или pathconf, но они, кажется, не поддерживают способа узнать ту информацию.

По-видимому, такая функция обсуждается для будущего стандарта POSIX

мы также зарегистрируем некоторых муравьедов для pathconf улучшения для возврата гранулярности меток времени на на основание пути.

К сожалению, я не вижу очевидного способа, чтобы сделать это сегодня, даже определенным для ОС способом.


Любой подход, который пытается создать список файловых систем и поддерживает ли он подвторое разрешение, опасен. Например, ext4 кажется, поддерживает разрешение наносекунды, если inodes составляют 256 байтов, но не, если они - 128 байтов.

Составление всестороннего и точного списка было бы трудно, может потребовать корневого доступа, и это могло бы измениться завтра. Который звучит более твердым, чем просто выполнение stat несколько раз мне.

3
27.01.2020, 20:24

Я только что реализовал обнаружение файловой базы данных. Сначала я устанавливаю метку времени файла на 1234 миллисекунды, а затем снова читаю ее и проверяю, является ли она точностью 1234 (с точностью не менее мс )или точностью 1000 (секунд ). То, что я узнал до сих пор, было:

  • XFS и EXT3 :секундная точность
  • EXT4 :миллисекундная точность
  • NTFS :Точность 100 нс (Хорошо, взял это из документации...)
2
27.01.2020, 20:24

Для Linux Fedora 35 с BTRFS (файловая система по умолчанию )я вижу следующую точность:

stat test1.txt

Access: 2021-11-25 19:48:58.254916839 +0000
Modify: 2021-11-22 09:54:48.694107073 +0000
Change: 2021-11-22 09:54:48.698107163 +0000
 Birth: 2021-11-22 09:54:48.694107073 +0000

Однако неясно, насколько точны эти значения.

-1
25.11.2021, 18:55

Теги

Похожие вопросы