Inode中存储一个文件除内容以外的信息。比如权限、大小等。有一个唯一的序号(inode serial number)来标识。可以存在好几个硬链接,同时对应这个文件(相同的文件内容)因此,一个文件叫什么名字,存在哪里,其实都不重要(在BSD系统里也称为vnodes).
可以用stat命令来查看inode信息:
$stat a.log
16777220 4303885280 -rw-r--r-- 2 mc staff 0 0 "Jun 8 07:39:34 2018" "Jun 8 07:39:34 2018" "Oct 24 09:20:37 2019"
"Jun 8 07:39:34 2018" 4194304 0 0 a.log
第二个信息就是 inode ID: 4303885280
有两个硬链接
用ls的i参数,也可以显示inode的信息。
ls -i a.log
4303885280 a.log
如何通过inode ID 找到一个文件的信息?
find . -inum 4303885280
./a.log
./a_t.log
两个硬链接,全部显示出来。
软硬链接:
软链接(symbolic links):
ln -s source_file target_file
软链接inode ID与原始的文件的inode ID 并不相同。如果把文件移动到其它位置,软链接会失效。
看来起好想不太好?可这恰恰是软链接的优势所在。软链接通过路径定位到文件。假如删除了一个文件,随后把另一个文件重命名为这个刚删除的文件名,那么之前的软链接会作用于这个新的文件。比如之前有个文件myfile, 回头把它备份为myfile_20191023,再重新建一个 myfile,软链接仍然有效。
硬链接(hard links):
ln source_file target_file
硬链接包含原始inode信息。但不包含原始文件内容的路径信息。使用硬链接,可以让一个文件出现在不同的位置。除非把所有硬链接都删除,否则不能删除最原始的硬链接(即彻底删除文件。)这一点与软链接不同。软链接可以删除文件,对应的软链接仍然保存,不过再不能通过它找到原来的文件而已。
阅读(803) | 评论(0) | 转发(0) |