前言
插播一下文件的软硬链接,其实也与文件系统相关。理解了硬链接和软链接也能够更好的理解文件系统
硬链接,符号链接
- 硬链接:不同的目录条目中指向相同的数据块内容
- 符号链接:其目录条目中,存放的是另一个路径的文件名,文件大小为存放路径字符个数,权限都为777
硬链接
ln src dest
- 只能对文件创建,不能应用与目录 避免循环引用
- 目录硬链接的数是2
- 不能跨文件系统,因为inode不同
- 创建硬链接会增加文件被链接的次数
[ubpara link]$ls -il
总用量 8
660108 -rw-rw-r-- 1 ubpara ubpara 9 5月 14 19:41 a
660109 drwxrwxr-x 2 ubpara ubpara 4096 5月 14 19:42 test
[ubpara link]$ln a test/a
[ubpara link]$ls -il test/
总用量 4
660108 -rw-rw-r-- 2 ubpara ubpara 9 5月 14 19:41 a
[ubpara link]$ls -il
总用量 8
660108 -rw-rw-r-- 2 ubpara ubpara 9 5月 14 19:41 a
660109 drwxrwxr-x 2 ubpara ubpara 4096 5月 14 19:42 test
[ubpara link]$
在test中创建a的一个硬链接 其inode号不变,表示当前目录的文件a和test目录下的文件a都指向相同的数据块。
660108 -rw-rw-r-- 2 ubpara ubpara 9 5月 14 19:41 a
2 代表硬链接数,从1变为2,若删除其中一个,硬链接数减1
软链接,符号链接
ln -s -v src dest
- 可应用与目录
- 可以跨文件系统
- 不会增加被链接文件的链接次数
- 其大小为其执行的路径所包含的字符个数
[ubpara link]$pwd
/home/ubpara/link
[ubpara link]$ln -sv /home/ubpara/link/a test/a
'test/a' -> '/home/ubpara/link/a'
[ubpara link]$ls -il test/
总用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$ls -il .
总用量 8
660108 -rw-rw-r-- 1 ubpara ubpara 9 5月 14 19:41 a
660109 drwxrwxr-x 2 ubpara ubpara 4096 5月 14 19:50 test
[ubpara link]$
在test目录下创建a的软链接,其inode号不同,是因为其新建的"目录项"中的内容是 “/home/ubpara/link/a”,权限为777
注:创建软链接的时候,源文件需要为绝对路径,不然会以当前路径(目标文件所在的路径)来找其链接的文件,因为其目录项存放相对路径
进阶
[ubpara link]$ls
a test
[ubpara link]$ls -il test/
总用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$cat test/a
hello
[ubpara link]$rm a
[ubpara link]$ls -il test/
总用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$cat test/a
cat: test/a: 没有那个文件或目录
[ubpara link]$echo goodbye > a
[ubpara link]$ls -il test/
总用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$cat test/a
goodbye
[ubpara link]$
若将a的原文件删除,那么a的链接就失效了,没有那个文件或目录。当在原路径中在创建一个新的文件a,因为在test目录下的a的"目录项"保存的路径是"/home/ubpara/link/a" 不变,所以链接又能成功
总结
硬链接文件有两个限制
- 只能对文件创建,不能应用与目录 避免循环引用
- 目录硬链接的数是2
- 不能跨文件系统,因为inode不同
- 创建硬链接会增加文件被链接的次数
软链接:
- 可应用与目录
- 可以跨文件系统
- 不会增加被链接文件的链接次数
- 其大小为其执行的路径所包含的字符个数