Linux软链接与硬链接区别

本文介绍了Linux中的硬链接和软链接,强调它们的区别和作用。硬链接不分配新的inode,而是指向同一文件,而软链接(符号链接)则包含另一文件的路径。硬链接不允许跨分区操作,而软链接可以。通过`ln`命令可以创建硬链接,使用`ln -s`创建软链接。软链接在源文件删除后会失效,而硬链接只要连接数不为0,文件依然可访问。
摘要由CSDN通过智能技术生成

一、背景

链接---------是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。

要了解链接,我们首先得了解一个概念,叫索引节点(inode)。在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。系统是通过索引节点(而不是文件名)来定位每一个文件。

ls -li
total xx
533124 drwxr-xr-x 9 apple apple 4096 May  4 10:22 apache-tomcat-8.5.41
360908 -rw-rw-r-- 1 apple apple   18 Jun  1 23:50 helloWolrd
360974 drwxr-xr-x 4 apple apple 4096 Jun  3 10:15 hi-cat
393217 drwxrwxr-x 6 apple apple 4096 May 28 09:37 program
518079 drwxrwxr-x 3 apple apple 4096 Mar  4 11:31 project

如上述命令 “ls -li” 结果中的第一列就是文件的 inode 号。系统是通过 inode 号寻找正确的文件数据块。 

二、硬链接(Hard Link)

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 innode 连接数就会增加 1 ; 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接。


可以用:ln命令来建立硬链接。

ln [options] existingfile newfile
ln [options] existingfile-list directory

用法:
第一种为”existingfile”创建硬链接,文件名为”newfile”。
第二种在”directory”目录中,为” existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options]:-f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。

使用java来描述这种行为,所有对象都是原始对象的引用,所以更改一个对象,其他对象都要改变

        Student student = new Student();  // 等同于在 Linux 新建了一个文件
        Student newStudent = student;     // 等同于给 Linux 文件新建一个硬链接
        student = null;                   // 删除原文件(的指针)
        if (newStudent != null) {      
            System.out.println("newStudent 不为空"); // 对象仍然存在 等同于 文件仍然存在
        }
 

三、软链接(Soft Link)

软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和windows下的快捷方式差不多。所以删除了源文件,快捷方式都失效
可以用:ln -s 命令来建立软链接。

ln -s existingfile newfile
ln -s existingfile-list directory


参考:

ln - 软链接与硬链接区别_我的博客-CSDN博客_硬链接

linux ln 用法,知识(软链接和硬链接)_mengzuchao的专栏-CSDN博客_ln链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值