有关文件或目录的信息

有关文件或目录的信息
  1. 在 Linux 中,文件或目录的信息存储在其 inode 中。我想知道 Windows 7 中文件或目录信息的数据结构是什么?
  2. 如何在 Linux 和 Windows 7 中的终端和命令行窗口中获取有关文件或目录的信息?
  3. 文件或目录的所有者是否始终是其创建者? 它会改变吗?
  4. Linux 和 Windows 7 中是否有文件创建时间戳?如何获取?

感谢致敬!

答案1

在 Linux 中,文件或目录的信息存储在其 inode 中。我想知道 Windows 7 中文件或目录信息的数据结构是什么?

在这两种操作系统中,这取决于所使用的文件系统。

Windows 使用NTFS默认情况下,“属性列表”在其主文件表中。有一些文档维基百科, 在NTFS.comLinux NTFS

较年长的FAT32文件系统(在可移动驱动器中仍然经常使用)更加简单,并且将所有内容保存在一个单一的文件分配表

如何在 Linux 和 Windows 7 中的终端和命令行窗口中获取有关文件或目录的信息?

在 Linux 中,使用stat命令。

在 Windows PowerShell 中,使用System.Io.FileInfo

在 Windows 中cmd.exe,您必须使用外部工具或自行处理dir

文件或目录的所有者是否始终是其创建者? 所有者可以更改吗?

  • 在 Windows NT 上(包括 XP、2003、Vista、7 及后续版本),新创建的对象1归其创建者所有,除非其他人取得所有权。(管理员可以使用SeTakeOwnership特权来执行此操作;非管理员可以在对象的 ACL 允许的情况下取得所有权。)

    • 在 Windows NT 的服务器版本中,管理员可以分配对象所有权转移给另一个用户。消费版本(如 Windows XP 或 7)仅允许服用所有权归您自己。

    • 在 Windows 2000 及更早版本中,如果创建者是管理员组的成员,则他创建的对象将归管理员所有,而不是用户所有。这在 Windows XP 中发生了变化,用户将永远拥有他所创建的对象。

    • FAT 文件系统不支持文件所有权。

  • 所有[需要引用] Unix 系统都使用文件的创建者作为其所有者。

    • root可以用来chown改变所有者。

Linux 和 Windows 7 中是否有文件创建时间戳?如何获取?

  • 在 Windows 中,FAT32 和 NTFS 都存储创建时间戳。cmd.exedir /tc将会显示它。

  • FreeBSD 的 UFS2 将创建时间存储为st_birthtime

  • 在 Linux 上,某些文件系统(ntfs,可能是 ext4)支持创建时间,但是操作系统本身尚未stat. (如果同名系统调用支持,该命令已经显示出生时间。)

笔记:在 Windows 和 FreeBSD 上,创建时间很容易改变。


1这适用于许多其他类型的 Windows NT 对象,不仅限于文件。示例:命名管道、注册表项、进程、服务、桌面、设备、互斥锁...

答案2

我不了解 Windows 7,但会尝试回答 Linux 部分。

  1. 没错,除了文件名。
  2. stat(1)实用程序可以获取有关 inode 的所有信息。伴随系统调用,stat(2)可以在您的程序中使用。
  3. 不,文件或目录的所有者可以随时更改,请参阅chown(8)。 也可以看看粘着位
  4. 不,在 Linux 中不存储创建时间戳。请参阅stat(2)syscall,具体struct stat定义。最后访问时间(st_atimespec)、修改时间(st_mtimespec)和 inode 数据修改时间(st_ctimespec)可用。

相关内容