【Linux取经路】文件系统——inode与软硬链接
在Linux文件系统中,每个文件都有一个inode(索引节点),它包含了文件的元数据,比如文件的大小、所有者、创建时间等,但不包含文件名。inode和文件名存储在目录项(directory entry)中,每个目录项包含文件名和对应的inode号。
硬链接(hard link)是一个指向inode的指针,创建硬链接不会创建新的inode。因此,硬链接和原始文件使用相同的inode和存储空间。
软链接(symbolic link或symlink)是一个指向目标文件的指针,它可以指向文件系统中的任何地方,包括不同文件系统或网络文件。创建软链接时,会创建一个新的inode来存储链接的路径。
下面是创建硬链接和软链接的命令示例:
# 创建一个名为file.txt的空文件
touch file.txt
# 创建file.txt的硬链接hardlink.txt
ln file.txt hardlink.txt
# 创建file.txt的软链接softlink.txt
ln -s file.txt softlink.txt
硬链接和软链接的区别:
- 硬链接不能指向目录,而软链接可以。
- 删除软链接文件不会影响原始文件,删除硬链接文件只会影响与之关联的inode的引用计数。
- 文件的真实内容存储在block中,而inode只记录了文件的元数据和block的位置信息。硬链接和原文件共享同一个inode和blocks,而软链接有自己的inode和blocks,其中blocks存储的是原文件的路径。
评论已关闭