一、背景
链接---------是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。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 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接。
![](https://img-blog.csdnimg.cn/71881d39465743eaa243c254aaae5963.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mp6ZqP5b-D6L2s,size_18,color_FFFFFF,t_70,g_se,x_16)
可以用: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链接