当前位置: 首页 > 科技观察

linux下文件内容更新了,但是文件夹的时间戳没有变化?_0

时间:2023-03-12 07:47:36 科技观察

在日常的多人协作中,一开始习惯看文件夹更新时间看有没有更新,但发现并不是总能如实反映情况,有时文件夹日期改变,有时保持不变。很迷茫,一起探讨下。例如,起始状态:ysx@localhost:~/trash/ehbio$ls-ltrtotal0drwxr-xr-x。2ysxehbio61月7日10:48webserverdrwxr-xr-x。2ysxehbio6Jan710:48traindrwxr-xr-x。2ysxehbio6Jan710:48bioinfoservice在webserver文件夹下添加一个文件,record.mdysx@localhost:~/trash/ehbio$cat<webserver/record.md1。完成9个生物在线数据存储、查询、分析网站建设。END再次检查文件夹的日期是否已更改。如果已更改,请为我们添加文件的日期。ysx@localhost:~/trash/ehbio$ls-ltrwebserver/record.md-rw-r--r--.1ysxehbio74Jan710:49webserver/record.mdysx@localhost:~/trash/ehbio$ls-ltrtotal0drwxr-xr-x.2ysxehbio6Jan710:48traindrwxr-xr-x.2ysxehbio6Jan710:48bioinfoservicedrwxr-xr-x.2ysxehbio22Jan710:49webserver然后继续添加内容,或者使用cat(不同的写法也有影响,后面会说到)。ysx@localhost:~/trash/ehbio$cat<>webserver/record.md2、NAR数据库特刊发表1个网站,3个网站正在提交中。END此时查看文件夹日期,发现与文件不同步。文件日期已更新,但文件夹日期未更新。ysx@localhost:~/trash/ehbio$ls-ltrwebserver/record.md-rw-r--r--.1ysxehbio148Jan710:52webserver/record.mdysx@localhost:~/trash/ehbio$ls-ltrtotal0drwxr-xr-x.2ysxehbio6Jan710:48traindrwxr-xr-x.2ysxehbio6Jan710:48bioinfoservicedrwxr-xr-x.2ysxehbio22Jan710:49webserver这是为什么?文件内容更新,但文件夹时间戳不变。那么是什么决定了文件夹的更新日期呢?我们在使用less操作的时候,有时候不小心对一个文件夹进行了less操作。看起来文件夹的内容变成了一个文本文件。ysx@localhost:~/trash/ehbio$少了网络服务器/总共4drwxr-xr-x。2ysxehbio22Jan710:49./drwxr-xr-x。5ysxehbio70Jan710:48../-rw-r--r--.1ysxehbio148Jan710:52record.md文件夹确实是以类似文本文件的方式存储的,文件夹可以看作是一个文件inode:由文件名(文件的属性信息)组成的文本文件inode的元信息存在于inode的meta信息中,可以通过stat文件查看)。只要没有文件的增删改查,文件夹中的文件的软链接或者inode(也叫索引节点)在文件夹中没有发生变化,文件夹的时间戳(代表文件夹的文本文件)就不会发生变化。webserver文件夹的文本存储(第一个例子中的inode,第二列中的文件名)2763934。日期没有改变。#-iinodeysx@localhost:~/trash/ehbio$ls-aiwebserver/2763934。2764125..104480record.mdysx@localhost:~/trash/ehbio$cat<>webserver/record.md>3.为大数据的再利用和更便捷的使用继续努力>ENDysx@localhost:~/trash/ehbio$ls-aiwebserver/2763934.2764125..104480record.md文件夹日期更新问题算是解决了。还有一个问题就是同事的文件虽然更新了,但是文件夹时间戳一般不会变。但是我发现我每次更新文件内容的时候,文件夹的日期都会发生变化,这好像和之前的认知是矛盾的。想了想,更新用的文本编辑器就不用了。问题可能出在vim(我每次都是用它来更新文件),下面我们来看一下。请注意webserver日期和webserver/record.md日期的变化以及ls-i的输出。ysx@localhost:~/trash/ehbio$ls-ltr总计0drwxr-xr-x。2ysxehbio6Jan710:48traindrwxr-xr-x。2ysxehbio6Jan710:48bioinfoservicedrwxr-xr-x。2ysxehbio22Jan710:49webserverysx@localhost:~/trash/ehbio$ls-ltrwebserver/record.md-rw-r--r--.1ysxehbio212Jan711:03网络服务器/记录。md#-iinodeysx@localhost:~/trash/ehbio$ls-iwebserver/record.md104480webserver/record.mdysx@localhost:~/trash/ehbio$vimwebserver/record.mdysx@localhost:~/trash/ehbio$ls-ltr网络服务器/record.md-rw-r--r--。1ysxehbio215Jan711:06webserver/record.mdysx@localhost:~/trash/ehbio$ls-ltrtotal0drwxr-xr-x。2ysxehbio6Jan710:48traindrwxr-xr-x。2ysxehbio6Jan710:48bioinfoservicedrwxr-xr-x。2ysxehbio22Jan711:06webserver#-i可以查看inodeysx@localhost:~/trash/ehbio$ls-iwebserver/record.md2465326webserver/record.md文件确实是vim改变了inode的文件,也就是说,当我们使用vim修改文件时,vim避免了中间的意外,修改前的文件先被重命名,修改后的文件以之前文件的名字存储。看起来我们做的是原地修改,其实是换了新的。文件,因此inode已更改。当然这个操作是可以自己配置修改的。还有一种情况,如果我们对文件夹没有写权限,但是对文件夹中的文件有写权限,vim会自动调用另外一个方法修改文件,先对文件做一个备份,然后就地修改.此时,文件夹的时间戳不会改变。ysx@localhost:~/trash/ehbio$chmoda-wwebserver/ysx@localhost:~/trash/ehbio$ls-ltrtotal0drwxr-xr-x。2ysxehbio6Jan710:48traindrwxr-xr-x。2ysxehbio6Jan710:48bioinfoservicedr-xr-xr-x。2ysxehbio22Jan711:06webserver#无法写入,没有权限ysx@localhost:~/trash/ehbio$vimwebserver/a#可以修改,但没有生成新文件ysx@localhost:~/trash/ehbio$vimwebserver/record.mdysx@localhost:~/trash/ehbio$ls-ltrwebserver/record.md-rw-r--r--.1ysxehbio249Jan711:15webserver/record.md#文件夹时间戳不变ysx@localhost:~/trash/ehbio$ls-ltrtotal0drwxr-xr-x.2ysxehbio6Jan710:48traindrwxr-xr-X。2ysxehbio6Jan710:48bioinfoservicedr-xr-xr-x。2ysxehbio22Jan711:06webserver#fileinodealsochangeedysx@localhost:~/trash/ehbio$ls-iwebserver/record.md2465326webserver/record.md还有很多问题和情况需要考虑在设计软件时。看似简单的事情,其实有很多“坑”需要注意。写网站、写工具、做分析都一样。