软链接(ln -s 快捷键) 硬链接(ln,引用别名,指向同一块磁盘地址)

在 Linux 系统中,软链接(symbolic link)硬链接(hard link) 都是指向文件的引用,但它们的工作原理和使用场景不同。以下是它们的详细对比和常见的 Linux Shell 指令。

1. 硬链接(Hard Link)

概念

硬链接是一个指向文件物理数据块的引用。它允许多个文件名指向同一个文件数据块。因此,多个硬链接的文件实际上指向相同的磁盘空间中的数据。

  • 相同 inode:硬链接具有相同的 inode 号,因此它们都指向相同的文件内容。
  • 文件内容不会重复:硬链接只是为同一数据块创建不同的文件名,数据块不会被复制。
  • 删除文件时不影响数据:当删除其中一个硬链接时,文件的内容仍然存在,只有当所有硬链接都被删除时,磁盘空间才会被释放。
  • 不能跨文件系统:硬链接不能用于不同文件系统之间。
创建硬链接

使用 ln 命令来创建硬链接。

ln /path/to/original_file /path/to/hard_link

例如:

ln file1.txt file2.txt

此命令会在当前目录中创建一个硬链接 file2.txt,它指向 file1.txt 的内容。

硬链接的特性
  • 删除:当删除一个硬链接文件时,文件的内容不会被删除,除非所有硬链接都删除了。
  • 文件名:硬链接没有区别,它们都是指向相同文件数据的引用。

2. 软链接(Symbolic Link)

概念

软链接(也叫符号链接,或简称 symlink)是一个特殊的文件,它包含指向另一个文件的路径。软链接是一个独立的文件,包含一个指向目标文件路径的引用。软链接是 文件路径的快捷方式

  • 不同 inode:软链接有自己的 inode,它的内容是目标文件的路径。它指向目标文件的路径,而不是文件内容。
  • 可以跨文件系统:软链接可以指向不同文件系统上的文件。
  • 目标文件被删除时软链接失效:如果目标文件被删除,软链接将指向一个不存在的文件,这时软链接会变成“悬挂链接”(dangling link),即指向无效位置。
创建软链接

使用 ln -s 命令来创建软链接。

ln -s /path/to/original_file /path/to/symlink

例如:

ln -s file1.txt symlink_to_file1.txt

此命令会创建一个软链接 symlink_to_file1.txt,指向 file1.txt

软链接的特性
  • 目标路径:软链接是路径的快捷方式。它指向目标文件的路径而非内容。
  • 可以跨文件系统:软链接可以跨文件系统链接文件。
  • 删除目标文件时失效:当删除软链接指向的文件时,软链接会变为悬挂链接,不再有效。

3. 硬链接与软链接的对比

特性硬链接软链接
指向对象指向同一个文件数据块(相同的 inode)指向文件路径(不同的 inode)
跨文件系统不支持跨文件系统链接支持跨文件系统链接
删除目标文件的影响文件数据不受影响,只有删除所有硬链接时数据才会被删除目标文件删除后,软链接失效(悬挂链接)
文件类型不区分,硬链接和原文件无区别软链接是一个独立的文件,类型为符号链接
支持目录不支持(一般不允许对目录创建硬链接)支持目录链接(在某些情况下需要权限)
创建方法使用 ln 命令使用 ln -s 命令

4. 常见的 Linux Shell 指令

创建硬链接
ln /path/to/original_file /path/to/hard_link
创建软链接
ln -s /path/to/original_file /path/to/symlink
查看文件的链接类型

可以使用 ls -l 命令查看文件类型以及文件是否为软链接:

ls -l file1.txt
  • 如果是软链接,会显示 -> 指向目标文件。
  • 硬链接则没有 ->,显示的是多个相同的文件名。

例如:

lrwxrwxrwx 1 user user 13 Oct 13 14:00 symlink_to_file1.txt -> file1.txt
删除文件

删除硬链接或软链接本质上都是删除文件名,文件内容只有在所有链接删除时才会被回收。删除链接使用 rm 命令:

rm file1.txt        # 删除硬链接
rm symlink_to_file1.txt  # 删除软链接

注意:删除硬链接时,如果该文件还有其他硬链接,文件内容不会删除。删除软链接时,只会删除软链接本身,不影响原文件。

显示文件的 inode 号

可以使用 ls -i 命令查看文件的 inode 号,来验证硬链接是否共享相同的 inode。

ls -i file1.txt

硬链接的文件将显示相同的 inode 号。


5. 总结

  • 硬链接 是指向相同文件数据块的多个文件名,适用于文件内容的共享,不支持跨文件系统,也无法对目录创建硬链接。
  • 软链接 是文件路径的快捷方式,支持跨文件系统,能够链接目录,且当目标文件删除时,软链接失效。

在选择使用硬链接还是软链接时,考虑你的需求:

  • 如果希望文件在多个位置共享内容且文件不会改变,可以使用硬链接。
  • 如果需要创建文件路径的快捷方式,或者链接跨文件系统的文件,可以使用软链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值