Node.js nodejs-如何更改文件的创建时间
fsStat类实例返回mtime、atime和ctime日期对象,但似乎只有用于更改mtime和atime(我猜是最后一次修改和访问)的API。如何更改创建时间以创建文件的精确副本,因为它也会与原始文件同时创建?tl;tr:这是不可能的atm(Node.js目前节点本身不可能,但您可以使用(节点的本机附加组件)在Windows和Mac上更改文件的创建时间(akaNode.js nodejs-如何更改文件的创建时间,node.js,file,last-modified,Node.js,File,Last Modified,fsStat类实例返回mtime、atime和ctime日期对象,但似乎只有用于更改mtime和atime(我猜是最后一次修改和访问)的API。如何更改创建时间以创建文件的精确副本,因为它也会与原始文件同时创建?tl;tr:这是不可能的atm(Node.js目前节点本身不可能,但您可以使用(节点的本机附加组件)在Windows和Mac上更改文件的创建时间(akabtime)。如果您只想解决问题(更改文件创建时间),python中有一个解决方案,请参见此处:.将fs.utimes和fs.utime
btime
)。如果您只想解决问题(更改文件创建时间),python中有一个解决方案,请参见此处:.将fs.utimes
和fs.utimesSync
方法内置到Node.js核心中。请参见
注:
该值应该是以秒为单位的Unix时间戳。例如,Date.now()返回毫秒,因此在传入之前应将其除以1000
要将JS日期对象转换为秒,请执行以下操作:
new Date().getTime()/1000|0
时间不是创造time@PA.感谢您的提及,我已经澄清了我的答案–至少在Windows上,
ctime
在撰写本文时被用作创建时间。它是Linux文件服务器,但它工作正常,实际上比我以前使用的bc更好,允许未定义的
保持字段不变。在Linux上,设置 btime
是不可操作的,但是如果提供的话,mtime
和atime
将在Linux上设置。嗯?为什么?我有btrfs RAID阵列,我想备份并能够还原低级文件元数据。这包括btime。btrfs文件系统上的节点stat返回atime
,mtime
,ctime
和birthtime
(虽然出生时间和ctime
是相同的)。我想更改它们。是的,我知道在UNIX中,ctime实际上不是文件创建时间,而是最后一次inode更新,但无论何时。只要我不使用硬链接,它就是创建时间。据我所知,Linux不支持出生时间
的概念。没有Linux API可以获取或设置我所知道的出生时间
。Linux fILE系统通常甚至没有一个字段来存储文件的出生时间
(即使Linux有API来更改它)。Node在Linux上的fs.stats
实例上引入了一个虚拟出生时间
,它跟踪ctime
(这是毫无意义的).Windows和Mac是支持生日的系统。ext4和btrfs确实支持它,但它不完全是文件的生日,因为就像我说的,它是最后一个inode更改的日期,所以它会在创建文件的硬链接时更改。但是,只要没有inode更改,它将保留文件创建的日期。我检查了对它的节点支持,是的,fs.statSync
返回的ctime是正确的,并且在硬链接创建后确实会更改。至少在节点v10.0之前,fs.utimes
只更新atime
和mtime
,而不是OP想要的字段,即出生时间。