科普下面这张图是我在一个视频教程里看到的,我觉得能说明问题。拿出来给大家看看,(*^__^*) 嘻嘻…… 当一个文件系统被格式化成ext2或者ext3的时候,就会产生Inode number。 大家注意到,在文件系统中每一个inode-no对应一个文件:例如图中对应的 1-F1(文件名) 2-D1 等等 而每一个Inode-no对应一个inode-table,即图中下面部分的一张表 首先我们看看,我们是怎么样读取和修改一个文件的 1、我们首先根据文件名,找到这个文件的Inode-no(节点数)。 2、当我们找到个文件的Inode-no时,就会根据这个number数在inodetable中找到对应的条目 3、现在要我们看一看inodetable中的信息: 从左到右依次是:节点数、文件类型、文件的权限、硬链接数、用户ID、组ID、文件的大小、时间戳记, 最后为指向硬盘上存放数据的数据块的指针。 简单说一下其中的某些项: 文件类型大有7种: - 普通的文件 d 目录 l 链接文件 b 块设备文件 c 字符设备文件 p 命名管道 s socket文件 从这里我们也可以看出,在linux文件系统中,目录也是当作文件来看的! 对于时间戳记有三种:存取时间,修改时间,变更时间 存取时间,为最后一次打开,或者是访问这个文件的时间; 而修改时间,为最后一次修改文件的时间; 当inodetable中的某项改变时,会更新变更时间。 4、系统首先检查权限等信息,确定该用户可以访问该文件的时候,就会通过最后的指针找到实际的数据块, 对文件进行存取; Linux下用文件的inode删除文件文件的inode定义了文 件的大小、所有人等文件的特征。每个文件和目录都有自己唯一的inode数字。但是为什么用inode来删除文件,而不是用常用的rm -rf命令呢?原因是,如果你不小心创建了含有特殊字符的文件和目录,比如带有 ? * ^ 的文件名,就会很难删除。下面我们就来介绍一下:1)如何找出文件和目录的inode;2)配合find命令,删除特定的inode文件;3)其他有用的 删除顽固文件的方法。 * 如何找出文件的inode? 用stat 或者ls -il 。带有 -i 参数的ls命令,就是指显示文件的inode。 * 找到inode后,如何删除这个文件? 1)下面我们完整实验一下,创建一个带特殊字符的文件: $ cd /tmp 2)尝试用rm命令删除 $ rm \+Xy \+\8 3)找出这个文件的inode数字 $ ls -il 4)342137就是我们要找的inode数字。下面用find命令删除它 $ find . -inum 342137 -exec rm -i {} \; 比如,你的系统中有”2008/11/20″这个文件,用rm是删除不了的。Linux不允许你建立这个文件,但是Windows下就可以。所以find配合inode的用处就在这里。 下面介绍一下其他有用的删除技巧: * 可以尝试用文件名加引号的方法删除文件。比如 “–help”文件,可以用rm “–help”删除 * 也可以用unlink删除文件。unlink 。unlink命令调用unlink函数,可以删除一个特定文件 * 用mtools删除Windows下创建的非法文件。这种方法在find命令配合inode失效时,最为有用。专门对付autorun.inf病毒创建的文件夹。 也可以xargs配合rm批量删除在不同位置的文件:把待删文件的完整路径都写入一个文本文件,如file.txt内容如下: 然后运行下面的命令删除file.txt中所列的文件 |
