Linux软链接和硬链接
链接文件
在同一分区中,不能使用同一个节点编号。
同一个文件不允许由多个节点编号。
硬链接 ln
一个文件可以起多个文件名 相当于马甲
硬链接本质上就给一个文件起一个新的名称,实质是同一个文件
ln link的简写 创建链接的命令
硬链接创建的文件彼此之间没有依赖关系
硬链接特性
- 创建硬链接会增加额外的记录项以引用文件
- 对应于同一文件系统上一个物理文件
- 每个目录引用相同的inode号
- 创建时链接数递增
- 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除
- 不能跨越驱动器或分区
- 不支持对目录创建硬链接
[root@C8-1 ~]# ln /boot/bigfile /boot/bigfileHln1
[root@C8-1 ~]# ln /boot/bigfile /boot/bigfileHln2
[root@C8-1 ~]# ln /boot/bigfile /boot/bigfileHln3
[root@C8-1 ~]# ln /boot/bigfile /boot/bigfileHln4
[root@C8-1 ~]# ln /boot/bigfile /boot/bigfileHln5
[root@C8-1 ~]# ll -ih /boot/
total 131M
309 -rw-r--r--. 7 root root 0 Jun 20 02:58 bigfile
309 -rw-r--r--. 7 root root 0 Jun 20 02:58 bigfileHln
309 -rw-r--r--. 7 root root 0 Jun 20 02:58 bigfileHln1
309 -rw-r--r--. 7 root root 0 Jun 20 02:58 bigfileHln2
309 -rw-r--r--. 7 root root 0 Jun 20 02:58 bigfileHln3
309 -rw-r--r--. 7 root root 0 Jun 20 02:58 bigfileHln4
309 -rw-r--r--. 7 root root 0 Jun 20 02:58 bigfileHln5
改一个文件,其余都改
[root@C8-1 ~]# echo {1..5}{a..b} >/boot/bigfileHln3
[root@C8-1 ~]# cat /boot/bigfile
1a 1b 2a 2b 3a 3b 4a 4b 5a 5b
[root@C8-1 ~]# cat /boot/bigfileHln5
1a 1b 2a 2b 3a 3b 4a 4b 5a 5b
删一个,文件不影响,Inodes数减,文件本身不变
符号链接(软链接)ln -s
相当于快捷方式 soft 可以跨分区 可以对文件夹
创建软链接,和原始文件根本不是一个文件,inodes不增加,像一个小名,
把原始文件删除,则软链接失效,依赖于原始文件
创建软链接的相对路径是相对于链接文件所在目录的相对路径
一个符号链接指向另一个文件,就像windows中快捷方式,软链接文件和原文件本质上不是同一个文件
软链接特点
- 一个符号链接的内容是它引用文件的名称
- 可以对目录创建软链接
- 可以跨分区的文件实现
- 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
- 软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录
#绝对路径
ln -s /data/dir /data/dirlink
#相对路径
cd /data
ln -s ../data/dir /root/dirlink
rm -rf /data/dirlink #删除软链接本身,不会删除源目录内容
rm -rf /data/dirlink/ #删除源目录的文件,不会删除链接文件
#查看链接文件指向的原文件
readlink /data/dirlink
实际举例
软件的升级和回滚
使用软链接指向不同的文件夹
升级 指向高版本目录
回滚 指向原目录
很要命的小细节 删文件夹
删软链接不会影响到源文件夹
删软链接时 若加/ 则会删掉源文件夹内的文件
[root@C8-1 ~]# ll
total 0
[root@C8-1 ~]# mkdir /data/test/
[root@C8-1 ~]# touch /data/test/{1..10}.test
[root@C8-1 ~]# ln -s /data/test/1.test ./testSln1.test
[root@C8-1 ~]# ln -s /data/test/ ./testSln
[root@C8-1 ~]# ll
total 0
lrwxrwxrwx. 1 root root 11 Jun 20 05:06 testSln -> /data/test/
lrwxrwxrwx. 1 root root 17 Jun 20 05:04 testSln1.test -> /data/test/1.test
删除软链接练习
##在当前工作目录中创建 /data/test/文件夹的软链接
[root@C8-1 ~]# ln -s /data/test/ ./testSln
[root@C8-1 ~]# ll
total 0
lrwxrwxrwx. 1 root root 11 Jun 20 05:06 testSln -> /data/test/
lrwxrwxrwx. 1 root root 17 Jun 20 05:04 testSln1.test -> /data/test/1.test
##删除刚创建的软链接
[root@C8-1 ~]# rm testSln
rm: remove symbolic link 'testSln'? y
##查看一下,软链接已删除
[root@C8-1 ~]# ll
total 0
lrwxrwxrwx. 1 root root 17 Jun 20 05:04 testSln1.test -> /data/test/1.test
##重新创建软链接
[root@C8-1 ~]# ln -s /data/test/ ./testSln
[root@C8-1 ~]# ll
total 0
lrwxrwxrwx. 1 root root 11 Jun 20 05:08 testSln -> /data/test/
lrwxrwxrwx. 1 root root 17 Jun 20 05:04 testSln1.test -> /data/test/1.test
##显示软链接文件夹中的内容
[root@C8-1 ~]# ls testSln
10.test 1.test 2.test 3.test 4.test 5.test 6.test 7.test 8.test 9.test
##直接删除软链接
[root@C8-1 ~]# rm testSln
rm: remove symbolic link 'testSln'? y
##查看一下源文件夹中的内容,并没有变化
[root@C8-1 ~]# ll /data/test/
total 0
-rw-r--r--. 1 root root 0 Jun 20 05:01 10.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 1.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 2.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 3.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 4.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 5.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 6.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 7.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 8.test
-rw-r--r--. 1 root root 0 Jun 20 05:01 9.test
##重新把软链接建立起来
[root@C8-1 ~]# ln -s /data/test/ ./testSln
##删除软链接的时候一不小心多加了一个斜杠 /
[root@C8-1 ~]# rm -rf testSln/
##再查看一下当前工作目录下,软链接并未被删除
[root@C8-1 ~]# ll
total 0
lrwxrwxrwx. 1 root root 11 Jun 20 05:09 testSln -> /data/test/
lrwxrwxrwx. 1 root root 17 Jun 20 05:04 testSln1.test -> /data/test/1.test
##查看一下源目录,原目录下的文件已经被删除
[root@C8-1 ~]# ll /data/test/
total 0
软链接和硬链接的区别
- 本质:
硬链接:本质是同一个文件
软链接:本质不是同一个文件 - 跨设备
硬链接:不支持
软链接:支持 - inode
硬链接:相同
软链接:不同 - 链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化 - 文件夹
硬链接:不支持
软链接:支持 - 相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件相对路径是相对于链接文件的相对路径 - 删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问 - 文件类型
硬链接:和源文件相同
软链接:链接文件,和源文件无关
* * *
胖并快乐着的死肥宅
* * *