我经常复制文件,每次复制文件时,我都希望它们的元数据(特别是告诉我文件创建时间的元数据)与副本保持一致。在 Windows 上,我通常只使用 robocopy 来实现这一点。
然而据我所知,在 ubuntu 上,它只是使文件创建的时间戳与文件最后修改的时间戳相同。
所以我的问题是 ubuntu 是否实际存储了文件创建的时间戳?
我可以使用 chmod、cp -p 或一些 FOSS 来复制元数据吗?我正在尝试尽可能停止使用 Windows。
到目前为止,我已经搜索过论坛并找到了类似问题的这些答案,但我还没有测试过其中的任何一个: 如何仅复制文件属性(元数据)而不复制文件的实际内容?
答案1
支持哪些特定的元数据取决于文件系统。
Ubuntu 中的默认文件系统是 ext4,做支持创建时间 (crtime),但没有简单的方法来查看它,它也不是可以设置为任意值的东西。因此,在复制文件时不会保留它,并且它应该被保留是值得怀疑的,因为它是用来指示文件条目的创建时间,而不是内容文件的。
正如您注意到的,更改时间(ctime)是保留。这是文件元数据的最后更改时间,mtime 与文件内容的相同。
其他几个 Linux 文件系统也存储了 crtime,但我不知道有什么方法可以用简单的工具来查看该时间,只能通过在原始设备上以 root 身份执行 debugfs。而且正如我所说,无论如何,复制文件时都无法保留它。
我认为,您将不得不放弃创建文件的时间。