文件时间戳 - 使用 libre Office writer 或 xed 编辑保存文件后出生时间发生变化

文件时间戳 - 使用 libre Office writer 或 xed 编辑保存文件后出生时间发生变化

我在 Linux Mint 21 上,我有一个 EXT4 文件系统
文件系统功能: has_journal ext_attr resize_inode dir_index filetype Needs_recovery extent 64bit flex_bg稀疏_superlarge_file巨大_file dir_nlink extra_isizemetadata_csum

我打开了一个文件 my_test:

touch my_test
stat my_test
  File: my_test
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 831h/2097d  Inode: 54          Links: 1
Access: 2023-12-17 22:26:37.610635694 +0100
Modify: 2023-12-17 22:26:37.610635694 +0100
Change: 2023-12-17 22:26:37.610635694 +0100
 Birth: 2023-12-17 22:26:37.610635694 +0100

然后用nano编辑它

nano my_test
stat my_test
  File: my_test
  Size: 12          Blocks: 8          IO Block: 4096   regular file
Device: 831h/2097d  Inode: 54          Links: 1
Access: 2023-12-17 22:27:32.207040986 +0100
Modify: 2023-12-17 22:27:48.387162937 +0100
Change: 2023-12-17 22:27:48.387162937 +0100
 Birth: 2023-12-17 22:26:37.610635694 +0100

你看到出生日期一模一样,然后我用 libre writer 打开它,编辑一些内容并保存

stat my_test
  File: my_test
  Size: 17          Blocks: 8          IO Block: 4096   regular file
Device: 831h/2097d  Inode: 55          Links: 1
Access: 2023-12-17 22:29:06.259760565 +0100
Modify: 2023-12-17 22:29:06.259760565 +0100
Change: 2023-12-17 22:29:06.267760627 +0100
 Birth: 2023-12-17 22:29:06.251760503 +0100

出生日期改变了 - 你看到有一个新的索引节点 - 为什么?

壳:

echo "hello" > my_test

保留出生日期

为什么 libre office writer 或 xed 更改出生日期,
这使得出生日期的整体意义变得毫无用处

他们是否使用了与文件系统功能相同的错误动态库?或者是什么?

答案1

比 don_crissti 的优秀更精确一点评论这解释了这种情况:

具有复杂文件类型编写器的程序倾向于写入临时文件,然后将临时文件重命名为原始名称,自动用新保存的文件替换它。

这有两个优点

  • 如果您有一个错误导致程序在保存过程中崩溃,则原始版本保持不变(希望这不是您需要的“功能”)
  • 原始文件名下任何时候都不会存在“半完整”文件。这对于在文件更改时自动更新文件的程序(例如,文件管理器的预览)有很大的不同。

但你是对的,这使得ctime文件的 变得无关紧要。至少在 libreoffice 中,您会发现在“文件属性”对话框中,仍然保存了原始创建时间 - 但它保存在文件本身中,而不是作为文件属性。

相关内容