Articles of inode

可以使用inode和crtime作为唯一的文件标识符吗?

我在Linux上有一个文件索引数据库。 目前我使用文件path作为标识符。 但是,如果一个文件被移动/重命名,其path被改变,我无法将我的数据库logging匹配到新文件,并且必须删除/重新创buildlogging。 更糟的是,如果一个目录被移动/重命名,那么我必须删除/重新创build所有文件和嵌套目录的logging。 我想使用inode号码作为唯一的文件标识符,但是如果删除文件并创build另一个文件,则可以重新使用inode号码。 所以,我想知道是否可以使用一对{inode,crtime}作为唯一的文件标识符。 我希望在NTFS上使用ext4和creation_time上的i_crtime。 在我有限的testing中(使用ext4)inode和crtime确实在同一个文件系统中重命名或移动文件或目录时保持不变。 那么问题是,是否有文件的inode或crtime可能会改变的情况。 例如,可以fsck或碎片整理或分区大小更改inode或crtime或文件? 有趣的是http://msdn.microsoft.com/en-us/library/aa363788%28VS.85%29.aspx说: “ 在NTFS文件系统中,文件保持相同的文件ID,直到它被删除。 ” 但也: “ 在某些情况下,文件的文件ID可能随时间而改变。 ” 那么,他们提到的是什么呢? 请注意,我研究了类似的问题: 如何确定在Linux中的文件的唯一性? 执行'mv A B':'inode'会被改变吗? 在Linux中检测移动或重命名为文件的最佳方法? 但他们不回答我的问题。

链接到特定的inode

我有一个被删除的文件,但仍然保持打开我的程序。 我用lsoffind了inode号码。 我怎样才能创build一个硬链接到这个inode? 任何代码都有帮助,但Perl会很方便。

什么是匿名inode?

我做了一个关于“匿名inode”的谷歌search,似乎它与epoll有关…但实际上是什么呢?

为什么inode号从1开始而不是0?

C语言约定从0开始统计数组索引。为什么inode号从1开始,而不是从0开始? 如果inode 0保留是为了某些特殊用途,那么inode 0的意义是什么?

什么是用相同的inode查找所有文件的最快方法?

我知道的唯一方法是: find /home -xdev -samefile file1 但是真的很慢 我想find一个像locate的工具。 真正的问题出现在你有很多文件的时候,我想操作是O(n)。

如何有效地监视一个目录在Linux上的变化?

我正在与Magento合作,并且有一个将CSS和Javascript合并成一个大文件的函数。 不pipe利弊如何,都存在以下问题: 最终文件被caching在多个级别,包括但不限于: Amazon CloudFront 代理服务器 客户端浏览器caching Magento使用连接的CSS文件名的MD5总和为合并的CSS文件生成一个新的文件名。 所以每一个具有不同的css文件集合的页面都会得到一个合适的css文件。 要解决caching问题,我还将文件修改时间戳记包含在该散列中,以便每次生成一个新的散列时修改一个css文件。 所以非真实性caching得分的全部优点,但是如果有些东西被改变了,它就会立即可见,因为资源链接已经改变了。 到现在为止还挺好: 唯一的问题是,用于生成has的文件名只是通常在HTML-Head块中直接引用的文件名,并且不包括这些文件中的css导入 。 因此,在css文件中导入的文件的更改不会导致新的散列。 不,我真的不想recursionparsing所有的input和扫描他们或类似的东西。 我宁愿想一个基于目录的解决scheme。 有没有什么可以有效地监视文件系统基础上的“目录内的最后更改”? 我们正在使用ext4。 或者也许有另外一种方法,也许用find命令,它可以完成基于inode索引的所有工作? 类似的东西? 我看到很多程序可以在不扫描整个文件系统的情况下即时“查看”更改。 我相信在Linux下也有一些“文件操作监视”守护进程。 问题是,CSS目录是相当巨大的。 任何人都可以指向正确的方向吗?

如何在ext4上存储十亿个文件?

我只创build了大约8百万个文件,然后在/ dev / sdb1中没有空闲的inode。 [spider@localhost images]$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 8483456 8483456 0 100% /home 有人说格式化分区时可以指定inode计数。 例如mkfs.ext4 -N 1000000000。 我试过,但得到一个错误: *“inode_size(256)* inodes_count(1000000000)太大…指定较高的inode_ratio(-i)或较低的inode计数(-N)。” 什么是合适的inode_ratio值? 我听说ext4的最小inode_ratio值是1024。 是否有可能在一个分区上存储十亿个文件? 如何? 有人说这会很慢。

为什么不能通过inode操作文件?

为什么当你只知道它的inode时,你不能访问一个文件,而不search链接到这个inode的文件? 一个硬链接到文件只包含一个名字和一个数字,告诉你在哪里可以find所有关于该文件的真实信息的索引节点。 当我被告知没有用户模式直接使用inode编号打开文件时,我感到很惊讶。 这似乎是这样一个系统提供无害和有用的能力。 为什么没有提供?