转载自: https://blog.csdn.net/weixin_42301220/article/details/134520854
1. 软链接和硬链接简介
什么是软链接
软链接(Symbolic Link),也称为 符号链接 ,是包含了源文件位置信息的特殊文件。它的作用是间接指向一个文件或目录。如果软链接的源文件被删除或移动了,软链接就打不开了。什么是硬链接
硬链接(Hard Link)指通过索引节点(inode
)来进行链接。在Linux系统中,每个文件都有一个对应的索引节点,记录文件的日期,大小,所在块等信息。硬链接就是指向源文件索引节点的连接。删除源文件,不影响硬链接的访问。会有多个硬链接指向源文件索引节点,所有硬链接都被删除时,源文件才会真正被删除
ls -l -i
可查看硬链接的个数, 和索引节点序号find -type f -inum {inodeNumber}
可查看指定索引节点的所有硬链接软链接和硬链接的区别
- 软链接是一个特殊的独立文件,它内容记录源文件位置;硬链接只是源文件的引用,不占用实际空间。
- 删除软链接不影响源文件:删除源文件,软链接失效。删除硬链接不影响源文件,需将源文件和全部硬链接删除,源文件才会删除(换句话说,如:
rm -f nami.jpg
只是删除了其中一个硬链接,通过其他硬链接访问依旧有效)。 - 软链接可以跨分区;硬链接不能跨文件系统。
- 软链接可以针对目录;硬链接不能针对目录。
2. 软链接使用
创建软链接的语法
1
ln -s 源文件或目录 软链接的文件或目录
-s
参数表示创建的是软链接。创建软链接示例
1
2# 将test.txt软链接到test_link
ln -s test.txt test_link这样就在当前目录下创建了一个
test_link
的软链接文件,它指向test.txt
。如下图,可以看到test_link
,箭头就表示它是一个链接。我们可以直接通过访问/修改test_link
来访问/修改test.txt
的内容。使用
ll
命令可以看到软链接的相关信息:1
2
3
4
5ll test_link
vim test_link
# 能看到修改后的内容
cat test.txt为目录创建软链接
软链接可以为目录创建快捷方式,方式与为文件创建软链接类似:1
2# 将/usr/local/dir1目录软链接到dir1_link
ln -s /usr/local/dir1 dir1_link这样访问
dir1_link
就相当于访问dir1
目录中的内容。修改和删除软链接
删除或修改软链接不会影响源文件/目录,它只是一个普通文件。删除软链接
1
2
3rm test_link
#或者
unlink test_link修改软链接,修改软链接的指向后, test_link 指向 test2.xt
1
ln -sf test2.txt test_link
3. 硬链接使用方法
创建硬链接语法
1
ln 源文件 硬链接名
不使用
-s
参数默认创建硬链接。创建硬链接示例
1
ln test.txt test_hardlink
这样就在当前目录下创建了一个
test_hardlink
的硬链接文件,指向test.txt
查看硬链接信息
使用ll
命令可以看到硬链接信息:1
ll test_hardlink
可以看到
test_hardlink
是一个硬链接文件,指向test.txt
, 索引节点相同。修改和删除硬链接
删除或修改硬链接不影响源文件,它只是一个目录项引用源文件的索引节点。删除硬链接
1
2
3rm test_hardlink
# 或者
unlink test_hardlink修改硬链接内容, 源文件内容将跟着一起变化。
1
vim test_hardlink
为目录创建硬链接
硬链接无法针对目录进行创建。1
2ln dir1 dir1_hardlink
ln: failed to create hard link ‘dir1_hardlink’ => ‘dir1’: Invalid argument
4. 总结
- 软链接通过指向源文件的路径建立链接,硬链接通过索引节点建立链接。
- 软链接可以跨文件系统,硬链接不能。软链接可以对目录创建链接,硬链接不可以。
- 删除软链接和硬链接都不影响源文件。
- 解除软链接和硬链接,直接删除链接文件即可。