如何解决更改bash中的crtime
我想更改bash中的crtime
属性。
首先,我尝试按照以下命令检查crtime。
stat test
接下来,我更改了时间戳。
touch -t '200001010101.11' test
但是我意识到,如果crtime
已经比我写的日期晚了,那么就不能更改它。
所以我想知道如何指定crtime
,即使它已经过去了。
解决方法
编辑:
根据This answer to a similar question,您可能可以使用debugfs -w -R 'set_inode_field ...'
来更改inode字段,尽管这确实需要卸载。
man debugfs
向我们显示了以下可用命令:
set_inode_field filespec字段值
修改filespec指定的inode,以使inode字段字段具有值value。可以使用以下命令显示可以通过此命令设置的有效inode字段的列表: set_inode_field -l也可以作为sif使用。
您可以尝试以下操作来验证crtime字段的索引节点编号和名称:
stat -c %i test
debugfs -R 'stat <your-inode-number>' /dev/sdb1
以及另外df -Th
来查找文件系统的/dev
路径(例如/ dev / sdb1)
其次:
umount /dev/sdb1
debugfs -w -R 'set_inode_field <your-inode-number> crtime 200001010101.11' /dev/sdb1
注意:在上述命令中,inode
数字 必须用<>
括号表示,如图所示。此外,如here所述,可能有必要用echo 2 > /proc/sys/vm/drop_caches
原始答案:
您可以尝试birthtime_touch
:
birthtime_touch
是一个简单的命令行工具,其工作原理类似于 触摸,但改为更改文件的创建时间(其“出生时间”) 访问和修改时间。
在birthtime_touch Github page中,它也指出了为什么这不是一件微不足道的事情:
birthtime_touch
当前仅在Mac OS X上运行。最低要求 版本是Mac OS X 10.6。已知birthtime_touch
适用于文件 存储在HFS +和MS-DOS文件系统上。
birthtime_touch
不适用于所有系统和 对于所有文件系统,不是所有文件系统都存储文件的 创建时间,对于实际存储创建时间的用户 没有标准化的API可以访问/更改该信息。
This page详细说明了为什么我们尚未看到对此功能的支持。
除此工具之外,可能值得在Github上查看源代码,以了解它是如何完成的以及是否可以移植到Unix / Linux。除此之外,我认为有必要编写低级代码来公开crtime
将存储的文件系统的那些方面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。