美文网首页
软链接和硬链接

软链接和硬链接

作者: 可能性之兽 | 来源:发表于2023-12-26 21:58 被阅读0次

硬链接和软链接(也称为符号链接或symlinks)是UNIX和类UNIX操作系统中文件系统的两种不同类型的链接。它们在文件系统中用于创建一个文件或目录的引用。主要区别:

硬链接

  • 相同的inode:硬链接指向文件系统中的相同inode(数据结构)。这意味着硬链接与它所链接的原始文件完全相同,它们是文件系统中相同数据的不同名字。
  • 不跨文件系统:硬链接不能跨越不同的文件系统,它们必须在同一个文件系统内。
  • 不指向目录:在大多数系统中,你不能为目录创建硬链接,只能为文件创建。
  • 删除行为:如果你删除了一个文件的硬链接,原始文件仍然存在,只要至少还有一个硬链接指向该文件。当最后一个硬链接被删除时,文件系统才会释放文件占用的空间。
  • 引用计数:文件系统维护一个计数器来追踪有多少硬链接指向同一个inode。当这个计数为零时,文件数据才会被删除。

软链接(符号链接)

  • 单独的inode:软链接有它自己的inode和文件属性。它是一个特殊类型的文件,其中包含了它所指向的目标文件或目录的路径。
  • 可以跨文件系统:软链接可以跨文件系统指向另一个文件系统中的文件或目录。
  • 可以指向目录:软链接可以指向文件也可以指向目录。
  • 删除行为:如果你删除了软链接指向的原始文件,软链接仍然存在,但是变成了一个“死链接”或“悬挂链接”,因为它所指向的文件已经不存在了。
  • 路径依赖:软链接通过路径名指向它们的目标。如果你移动了软链接指向的原始文件,软链接不会更新,会变成死链接。

创建命令

在Linux中创建硬链接和软链接的命令是ln

  • 创建硬链接:ln target link_name
  • 创建软链接:ln -s target link_name

在这里,target是你想要链接的原始文件,link_name是链接的名称。

使用场景

  • 硬链接通常用于文件备份和防止意外删除。
  • 软链接更多用于创建对程序、文件或目录的引用,它们更灵活,允许链接到目录,并且可以跨文件系统工作。

将一个文件夹之中的全部软连接转换为硬连接

#!/bin/bash

# 这个目录包含你的软链接
link_dir="raw"

# 这个目录是你想要创建硬链接的位置
hard_link_dir="./Hard"

# 确保硬链接目录存在
mkdir -p "$hard_link_dir"

# 遍历目录中的所有文件
for link in "$link_dir"/*; do
    # 检查是否为软链接
    if [ -L "$link" ]; then
        # 获取软链接指向的原始文件
        target=$(readlink "$link")
        
        # 获取软链接的文件名
        link_name=$(basename "$link")
        
        # 创建硬链接的完整路径
        new_hard_link_path="$hard_link_dir/$link_name"
        
        # 创建硬链接,如果原始文件在同一文件系统中
        if ln "$target" "$new_hard_link_path" 2>/dev/null; then
            echo "硬链接已创建:$new_hard_link_path -> $target"
        else
            echo "硬链接创建失败:$link -> $target (可能是跨文件系统或其他错误)"
        fi
    fi
done

相关文章

  • 硬链接和软链接

    最近的一个项目,做的是开发者平台文件的下载。业务本身没有什么技术难度,但就在项目测试过程中发现,iOS 平台部分文...

  • 软链接和硬链接

    修改硬链接会影响源文件的内容,也会影响软链接的内容;修改源文件也会影响硬链接和软链接; 删除源文件,输入命令:ll...

  • 硬链接和软链接

    在Linux中,文件由两部分组成:用户数据(user data)和元数据(meta data)。用户数据,即文件数...

  • 硬链接和软链接

    硬链接(hard link):ln 源文件名 链接名 文件A是文件B的硬链接,则A的目录项中的inode节点号与B...

  • 软链接和硬链接

    概念 软链接 相当于win创建快捷方式(方便使用,注:删除源文件,则无法继续使用) 硬链接 相当于将原文件拷贝一份...

  • 硬链接和软链接

    一、硬链接(Hard Link)的概念 硬链接也称为实体连接它是在某个目录下新增一笔档名链接到某 inode 号关...

  • 软链接和硬链接

    要理解软链接和硬链接需要首先理解文件系统的原理,这里以EXT2文件系统为例。 Ext2文件系统由3部分组成: su...

  • 软链接和硬链接

    一、软件链接 定义:类似于windows下的快捷方式作用:可以对硬盘空间进行合理分配使用方式:ln -s 源文件 ...

  • 软链接和硬链接

    https://www.ibm.com/developerworks/cn/linux/l-cn-hardands...

  • 软链接和硬链接

    可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名...

网友评论

      本文标题:软链接和硬链接

      本文链接:https://www.haomeiwen.com/subject/aqxrndtx.html