它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录放上该文件,然后在其它的目录下用ln命令链接它就可以,不必重复的占用磁盘空间。无论是硬链接还是软链接,文件都保持同步变化。
硬链接(Hard Link)
硬链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。
软链接(Symbolic Link)
软链接文件和被链接文件可位于不同的文件系统中,能建立指向目录的软链接。
# mkdir /test // 创建test文件夹
# cd /test // 切换到test目录
# touch file1 // 创建file1文件
# touch file2 // 创建file2文件
# ln file1 file1hard // 创建硬链接
# ln -s file2 file2symbolic // 创建软链接
# ls -li // 查看文件
总用量 0
7471106 -rw-r--r-- 2 root root 0 1月 7 16:06 file1
7471106 -rw-r--r-- 2 root root 0 1月 7 16:06 file1hard
7471107 -rw-r--r-- 1 root root 0 1月 7 16:06 file2
7471108 lrwxrwxrwx 1 root root 5 1月 7 16:07 file2symbolic -> file2
# echo "I am file1" >> file1 // 输出信息到file1
# echo "I am file2" >> file2 // 输出信息到file2
# cat file1 // 打印硬链接原文件
I am file1
# cat file1hard // 打印硬链接
I am file1
# cat file2 // 打印软链接原文件
I am file2
# cat file2symbolic // 打印软链接
I am file2
# rm -rf file1 // 删除硬链接原文件
# rm -rf file2 // 删除软链接原文件
# cat file1hard // 打印硬链接
I am file1
# cat file2symbolic // 打印软链接
cat: file2symbolic: No such file or directory
现象:
1.
创建硬链接前file1显示的链接数目为1,创建硬链接后file1与file1hard的链接数目都变为2。
创建软链接后file2与file2symbolic的链接数目没有改变,都为1。
2.
file1与file1hard的编号是一样的,都是7471106。
file2与file2symbolic的编号是不同的。
3.
file1和file1hard显示的文件大小也是一样,都是0B。
file2文件大小为0B而file2symbolic的文件大小为5B。
区别:
1.
硬链接原文件与硬链接文件公用一个编号,表明他们是同一个文件。
软链接原文件与软链接文件拥有不同编号,表明他们不是同一个文件。
2.
硬链接没有写文件属性,因为在本质上硬链接文件和硬链接原文件是完全平等关系。
软链接写明了文件属性,明确写出了是链接文件。
3.
硬链接,以文件副本的形式存在。但不占用实际空间。
软链接,以路径的形式存在,占用空间。
4.
当硬链接原文件删除或改变位置后,硬链接照常使用。
当软链接原文件删除或改变位置后,软链接无法使用。
硬链接(Hard Link)
硬链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。
软链接(Symbolic Link)
软链接文件和被链接文件可位于不同的文件系统中,能建立指向目录的软链接。
# mkdir /test // 创建test文件夹
# cd /test // 切换到test目录
# touch file1 // 创建file1文件
# touch file2 // 创建file2文件
# ln file1 file1hard // 创建硬链接
# ln -s file2 file2symbolic // 创建软链接
# ls -li // 查看文件
总用量 0
7471106 -rw-r--r-- 2 root root 0 1月 7 16:06 file1
7471106 -rw-r--r-- 2 root root 0 1月 7 16:06 file1hard
7471107 -rw-r--r-- 1 root root 0 1月 7 16:06 file2
7471108 lrwxrwxrwx 1 root root 5 1月 7 16:07 file2symbolic -> file2
# echo "I am file1" >> file1 // 输出信息到file1
# echo "I am file2" >> file2 // 输出信息到file2
# cat file1 // 打印硬链接原文件
I am file1
# cat file1hard // 打印硬链接
I am file1
# cat file2 // 打印软链接原文件
I am file2
# cat file2symbolic // 打印软链接
I am file2
# rm -rf file1 // 删除硬链接原文件
# rm -rf file2 // 删除软链接原文件
# cat file1hard // 打印硬链接
I am file1
# cat file2symbolic // 打印软链接
cat: file2symbolic: No such file or directory
现象:
1.
创建硬链接前file1显示的链接数目为1,创建硬链接后file1与file1hard的链接数目都变为2。
创建软链接后file2与file2symbolic的链接数目没有改变,都为1。
2.
file1与file1hard的编号是一样的,都是7471106。
file2与file2symbolic的编号是不同的。
3.
file1和file1hard显示的文件大小也是一样,都是0B。
file2文件大小为0B而file2symbolic的文件大小为5B。
区别:
1.
硬链接原文件与硬链接文件公用一个编号,表明他们是同一个文件。
软链接原文件与软链接文件拥有不同编号,表明他们不是同一个文件。
2.
硬链接没有写文件属性,因为在本质上硬链接文件和硬链接原文件是完全平等关系。
软链接写明了文件属性,明确写出了是链接文件。
3.
硬链接,以文件副本的形式存在。但不占用实际空间。
软链接,以路径的形式存在,占用空间。
4.
当硬链接原文件删除或改变位置后,硬链接照常使用。
当软链接原文件删除或改变位置后,软链接无法使用。