软链接与硬链接
我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。
1、用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方
2、元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。图 1.展示了程序通过文件名获取文件内容的过程。
图 1. 通过文件名打开文件
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。
图 2. 软链接的访问
如图所示
项目 | 硬接接 | 软连接 |
---|---|---|
原理 | Hard link共享file的inode | soft link有自已的inode和数据块,但数据块是指向其它文件的路径名 |
创建命令 | link oldfile newfile 或ln oldfile newfile | ln -s oldfile newfile |
文件和目录操作 | 只有对文件操作 | 文件和目录都可以创建软链接 |
删除操作 | 删除一个硬链接文件并不影响 | 删除源文件会影响软链接文件(特别需要注意的当软链接是目录是删除软链接不能加上“/”否则会删除软链接时同时删除目录文件夹的所有文件) |
查看 | ls -li #如果是硬连接INODE是相同的 | ls -li #查看目标文件 |
find | 查找软链接与硬链接 | find /home -samefile /home/harris/debug/test3/old.file find /home -lname data.txt |
特别需要注意的当软链接是目录是删除软链接不能加上“/”否则会删除软链接时同时删除目录文件夹的所有文件)
rm -rf softfile 删除软链接
rm -rf softfile/ 删除软链接并删除目标文件夹的所有文件