Tim*_*Tim 115 linux filesystems files
我只知道这一点ls -t,ls -f并在目录下对文件和子目录进行了不同的排序。
例如,我看到有人写道:
默认情况下,rsync 程序只查看文件的大小和时间戳是否不同。它不关心哪个文件更新,如果不同,它会被覆盖。您可以将 '--update' 标志传递给 rsync,这将导致它跳过目标文件,如果它们比源文件新,但前提是它们是相同类型的文件。这意味着,例如,如果源文件是常规文件而目标文件是符号链接,则无论时间戳如何,目标文件都将被覆盖。
附带说明一下,这里的文件类型是否仅表示常规文件和 simlink,而不是 pdf、jpg、htm、txt 等类型?
ech*_*hox 160
有 3 种“时间戳”:
要显示此信息,您可以使用statwhich 是 coreutils 的一部分。
stat 还会显示更多信息,如设备、inode、链接等。
请记住,此类信息高度依赖于文件系统和挂载选项。例如,如果您使用该noatime选项挂载分区,则不会写入任何访问信息。
更改时间戳的实用程序是touch. 有一些参数可以决定要更改哪个时间戳(例如 -a 表示访问时间,-m 表示修改时间)并影响对新给定时间戳的解析。有关man touch更多详细信息,请参阅。
touch与cp -u(“仅当源文件比目标文件新或目标文件丢失时才复制”)或创建空标记文件结合使用时,可以变得方便。
Huy*_*ens 41
echox 的答案是有效的,但我想添加有关文件创建时间的信息。
一些文件系统支持 inode 中关于创建时间(或出生时间)的附加条目。我知道ext4 支持此功能以及JFS 和 BTRFS。
然而,大多数工具和 API 尚未更新以读取此额外信息。因此,即使它可能在那里,也无法访问。
例如,在 Ubuntu 12.04 LTS 上,我今天创建的文件得到以下内容:
$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
Birth: -
$ sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
ctime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
atime: 0x4fcdee98:42b417dc -- Tue Jun 5 13:33:44 2012
mtime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun 5 13:32:22 2012
[...]
Run Code Online (Sandbox Code Playgroud)
您可以看到较新的 stat 函数有一个birth字段,但输出似乎不正确。通过 debugfs 我们可以获得信息(因为我在 ext4 文件系统上是 crtime)。
现在有因为内核4.11新statx系统调用,对更好地支持Y2038或网络文件系统之上,同时也带来了一些额外的功能,如btime或出生时(创建时间)的访问。对 ext4 的支持应该在同一个内核版本 4.11 中。
在以后的内核版本中已经有补丁来添加对这个新系统调用的支持:例如内核 4.13 中的 BTRFS 和 F2FS、4.14 中的 SMB3、4.15 中的 GFS2、4.16 中的 NFS 等。
即将到来的 glibc 将提供一个函数调用来查询这个接口(参见关于 glibc statx 支持的 Phoronix 新闻)。因此,我们可以期待很快在用户空间中支持此功能。