fs.statSync()没有提供EFS文件的实际创建时间(BirthTime)

0

【以下的问题经过翻译处理】 我正在使用fs(Node Module)管理文件。 我正在获取文件的创建时间(BirthTime)。 在我的本地机器上运行此应用程序时,它运行得非常好。 但是当我尝试使用NodeJs Lambda函数在EFS上实现它时,它会给出1970-01-01T00:00:00.000Z,这不是我创建的文件的实际时间。

var efsDirectory = "/mnt/data/";
var filePath = path.join(efsDirectory, file);
console.log("This file is going to be executed :", file);
var response = fs.statSync(filePath);
let fileBirthTime = response.birthtime;
console.log("File path is : ", filePath);

在拼接路径之后,我的文件路径看起来像这样:filepath = /mnt/data/172.807056.json,这是文件的实际路径。

在Cloudwatch日志中,我得到了这个: Cloudwatch Logs

在本地机器上,一切正常,可以获取文件的实际创建时间(BirthTime)。你能告诉我为什么会出现这种情况吗?除了BirthTime之外,所有其他值,如ctime、atime、mtime,都被正确创建。这种行为只在我操作EFS上的文件时出现。

1 回答
0

【以下的回答经过翻译处理】 您之所以在birthtime上获得这样的结果,是因为它在大多数NFS文件系统(如EFS)上不受支持。即使在Linux操作系统上,它也取决于内核和文件系统类型是否支持该字段。在EBS上的Amazon Linux 2上,默认文件系统不会返回birthtime的值。但是在最新的Ubuntu镜像上,它是支持的。这就是为什么在本地运行和在EFS上运行之间会看到差异的原因。

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则