软链接(Soft Link)
软链接(符号链接(symbolic link 或者 symlink))可以将一个文件与另一个文件相关联。
它类似于 MS Windows 中的快捷方式,其中实际文件驻留在目录结构中的某处,但我们可能有多个快捷方式或者指向它的不同名称的指针。
这意味着通过实际文件名或者任何快捷方式访问文件将产生相同的结果。
每个软链接都有一个唯一的 inode 编号。
软链接可以跨越文件系统边界,并可用于链接目录。
要在同一目录中为 unix-admin 创建一个作为 sys-admin 的软链接,请使用带有 -s 选项的 ln 命令:
$ cd /home/onitroad/ $ ln -s unix-admin sys-admin
其中:
- unix-admin 是一个现有文件
- sys-admin 软链接到 unix-admin
创建链接后,使用 -i 选项发出 ll。
注意字母 l 作为输出第二列中的第一个字符。
另外,请注意从链接文件指向原始文件的箭头。
这表明 sys-admin 只是一个指向 unix-admin 的指针。
-i 选项在第一列中显示关联的 inode 编号。
$ ll -i 3674110 lrwxrwxrwx 1 onitroad onitroad 10 Jan 12 11:03 sys-admin -> unix-admin 3674109 -rw-rw-r-- 1 onitroad onitroad 0 Jan 12 11:03 unix-admin
如果删除原始文件(本例中为 unix-admin),链接 sys-admin 将保留但指向不存在的内容。
硬链接(Hard Link)
硬链接将两个或者多个文件与单个 inode 编号相关联。
这允许文件具有相同的权限、所有权、时间戳和文件内容。
对任何文件所做的更改都会反映在其他链接文件上。
所有文件实际上都包含相同的数据。
硬链接不能跨越文件系统边界,也不能用于链接目录。
以下示例使用 ln 命令,并为位于 /home/onitroad 下的“ubuntu-rocks”文件创建到同一目录中的“debian-os”的硬链接。
请注意,“debian-os”文件不存在,但会被创建。
$ cd /home/onitroad/ $ ln ubuntu-rocks debian-os
创建链接后,使用 -i 选项运行 ll:
$ ll -i 3674110 -rw-rw-r-- 2 onitroad onitroad 40 Jan 12 11:15 debian-os 3674110 -rw-rw-r-- 2 onitroad onitroad 40 Jan 12 11:15 ubuntu-rocks
查看第一列和第三列。
第一列表示两个文件具有相同的 inode 编号,第三列表示每个文件都有两个硬链接。
“ubuntu-rocks”指向“debian-os”,反之亦然。
如果我们删除原始文件(本例中为 ubuntu-rocks),我们仍然可以通过链接文件 debian-os 访问数据。