可以使用 ln 命令创建硬链接和软链接,它的基本用法是:
ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... -t DIRECTORY TARGET...
默认是创建硬链接:
$ ln 1.txt 2.txt
$ stat 1.txt
文件:1.txt
大小:6 块:8 IO 块:4096 普通文件
设备:801h/2049d Inode:4074533 硬链接:2
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-01-23 11:58:36.253906250 +0800
最近更改:2021-01-23 11:58:32.449218750 +0800
最近改动:2021-01-23 11:58:32.449218750 +0800
创建时间:-
$ stat 2.txt
文件:2.txt
大小:6 块:8 IO 块:4096 普通文件
设备:801h/2049d Inode:4074533 硬链接:2
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-01-23 11:58:36.253906250 +0800
最近更改:2021-01-23 11:58:32.449218750 +0800
最近改动:2021-01-23 11:58:32.449218750 +0800
创建时间:-
创建软链接的方法是:
$ ln -s 2.txt 3.txt
$ stat 3.txt
文件:3.txt -> 2.txt
大小:5 块:0 IO 块:4096 符号链接
设备:801h/2049d Inode:4075224 硬链接:1
权限:(0777/lrwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-01-23 11:57:39.160156250 +0800
最近更改:2021-01-23 11:57:29.589843750 +0800
最近改动:2021-01-23 11:57:29.589843750 +0800
创建时间:-
它们之间的区别:
- 对于硬链接而言,link_name 是 target 的另外一个名字,它们其实是同一个文件,target 和 link_name 有相同的inode,删除其中任意一个,对源文件都没有影响,除非引用计数为0,此时才会删除源文件。
- 对于软链接而言,target 和 link_name 是两个文件,它们的 inode 不同,但是 link_name 指向 target,删除 target 后,link_name 将会无效,但删除 link_name后,target不受影响。