文件管理

      linux的文件管理

    linux的文件组成:

      1、数据:数据就是文件内容

      2、Metadata元数据:每个文件除了内容之外,都有一些相关信息。例如我们之前所提到的文件的所有者,所有组和权限,这些都属于元数据,还包含了修改时间。可ls -l显示的内容大多都属于。这些信息都保持在一个叫inode节点的结构中;

      3、文件名称:其实文件名称也算是元数据,只所有把它摘出来,是因为其不保存在i节点中,文件名保持在名为dentry目录项的结构中。在实质上,该文件名是把一个文件名称和一个i节点关联起来。

      总的来说:每个文件都有以下三层结构:dentry/inode以及data。dentry含有文件名并关联inode,inode含有文件元数据并指向数据data。

      什么是i节点?linux系统中,文件系统内的每个文件都有一个相关的i节点,里面保存除了文件名称和数据外所有文件信息。

      i节点里面有什么?

        1、文件类型:linux系统中,file的含义非常笼统,文件系统内的任何东西,都有可能是个文件,包括我们提到过的常规文件、目录、符号链接、设备节点等等。

        2、所有者身份及权限:每个文件和目录都有所有者、所有组合分别权限,这些信息都保持在i节点中,而且所有文件的i节点结构相同,所有我们在查看时,显示内容,以及修改的命令,都相同的。

        3、时间信息:每一个i节点保存于文件文件关联的三个时间信息,通常叫做atime/ctime以及mtime。

 

缩写 命令 含义
atime 访问时间 文件数据每次被阅读后更新
ctime 改变时间 文件的i节点信息每次被改变后更新
mtime 修改时间 文件数据每次被改变后更新

 

 

 

 

 

 

      我们需要知道,改变修改有何不同? 当一个文件的数据更新,就说该文件被修改,mtime会更新;当一个文件的i节点更新时,就说该文件被改变,ctime会更新。

      最后需要注意的是,人民常错把ctime作为创建时间,其实linux系统不记录文件创建时间,这是系统设计缺陷导致。

      4、文件长度以及大小:i节点用两种度量记录文件大小,分别是长度和大小,长度表示文件数据实际的字节数,而大小则表示所占用的磁盘空间,

      5、链接数量:i节点记录着文件的链接数,也就是引用该文件dentry数(就是文件名称)

      使用stat命令查看i节点信息

stat filename 显示文件状态信息
file 文件名称,该信息不属于i节点的信息
size 文件长度
blocks 该文件占用的文件系统空间块数
regular* 文件类型
links 链接计数
uid* 该文件所有者以及权限
access* 该文件atime/mtime和ctime

 

 

 

 

 

 

 

 

      使用ls命令查看i节点信息

        ls -i filename    显示文件i节点的编号

 

    硬链接以及软链接:

      什么是硬链接?比如a和b两个人同时开发一款软件,那a写完之后要拷给b,b写完也要拷给a,这样子很麻烦,如果a的文件更新之后,b的文件自动同步更新,岂不更加方面?这就是硬链接。

      创建方式:ln file1 file2

      什么是软链接?软链接就好比windows的快捷方式,用于链接一个文件,却占用很小的空间。

      创建方式:ln -s file1 file2

      注意:创建的时候,原文件在前,快捷方式在后

         工作经验:一般都用软链接,硬链接基本没用

        与软链接有关的事项:

          1、Dangling Link 空链接:链接目标文件被删除了,软链就会变成空链

          2、递归链接:file1链接file2,file2链接file1,这种相互链接,称为递归链接;

          3、绝对软链以及相对软链:由路径决定的。

软链 硬链
软连接可以关联到目录 目录之间不可用硬链接
删除原文件会导致空链 可以删除任意一端
软链可以关联不同文件系统中的文件 硬链必须在同一个文件系统下面
当一个文件依赖于另一个文件而存在,一般使用软链 链接两端文件经常被使用到,甚至其中一端的文件不存在,用硬链接比较合适

 

 

 

 

 

 

 

 

 

 

 

    

posted @ 2019-01-25 20:32  初晰见海  阅读(174)  评论(0编辑  收藏  举报