Linux:软硬链接ln指令

发布时间 2023-08-09 21:40:00作者: ShineLe

学习自:Linux 硬链接与软链接

Linux常用命令—ln命令-良许Linux教程网

1、说明

ln -s创建软链接,其他情况创建硬链接

Linux有两种链接:硬链接(Hard Link)和软链接(Symbolic Link)。ln指令默认情况下产生硬链接,加选项-s产生软链接。

硬链接

硬链接通过inode来链接。

inode是指索引节点号(indoe index),在Linux文件系统中,保存在磁盘分区中的文件都有一个inode号,存在多个文件名指向同一个inode的情况,即一个inode对应两个不同的文件名,两个文件名指向同一个文件。这两个文件对文件系统来说是完全平等的,删除其中任何一个都不会影响另一个的访问。

硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接连接到重要文件,以防止误删。此时删除一个不影响索引节点本身其它的连接,只有当最后一个连接被删除后文件的数据块和目录的链接才会被释放

此时文件真正删除的条件是所有与之相关的硬链接文件都被删除

软链接

也称符号链接(Symbolic Link),类似Windows快捷方式。

它实际上是个特殊的文本文件,其中包含有另一文件的位置信息。例如:A是B的软链接,此时A和B目录项的inode号不同,A和B指向的是两个不同的inode,继而指向两个不同的数据块。只是A数据块中存放B的路径(可以据此找到B的目录项)。A和B是主从关系,如果B被删除了,A仍然存在,但是指向的是一个无效的链接。

2、用法

  • ln 选项 源文件 新建链接文件

  • ln 选项 源文件 

  • ln 选项 源文件 链接目录

  • ln 选项 -t 链接目录 源文件

其中第三四种效果相同

 

源文件:链接源,如果是符号链接,源文件可以是文件或目录。如果是硬链接,源文件只能是文件

3、选项

选项

全拼

说明

  --backup[=CONTROL] 为每个已存在的源文件创建备份文件
-b   效果同--backup但不接受任何参数
-d,-F --directory 创建指向目录的硬链接(仅限超级用户)
-f --force 强行删除任何已存在的源文件
-i --interactive 覆盖已存在文件前先询问
-L --logical 取消引用作为符号链接的源文件
-n --no-dereference 把符号链接的目的目录视为一般文件
-P --physical 直接将硬链接链接到符号链接
-s --symbolic 建立符号链接
-S --suffix=SUFFIX 使用选项-b进行源文件备份时,备份文件末尾加上的备份字符串
-t --target-directory=DIR 指定要在哪个目录中建立链接
-T --no-target-directory 将LINK_NAME视为常规文件
-v --verbose 打印每个链接文件的名称
  --help  
  --version  

 

4、例子

例子:

①实体链接

复制代码
ll -i /etc/crontab
34474855 -rw-r--r--. 1 root root 451 Jun 10 2014 /etc/crontab
ln /etc/crontab . ll -i /etc/crontab crontab 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
复制代码

②符号链接/快捷方式

ln -s /etc/crontab crontab2
ll -i /etc/crontab /root/crontab2
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 -> /etc/crontab
  • 两个文件指向不同的inode,说明两个文件独立存在。
  • 连结档的大小为12bytes,因为->右边的档名[/tec/crontab]共有12个英文,每个英文占用1B,因此文件大小就是12B