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 Antwort
0

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

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen