Linux中文件的软链接和硬链接

参考:​​​​​硬链接与软链接 - 苦逼运维 - 博客园

总览

命令: ln(英文全拼:link files)

语法:ln [参数][源文件或目录][目标文件或目录]

语法实例:

                ln -s log2013.log slink2013:为log2013.log文件创建软链接slink2013

                ln log2013.log hlink2013:为log2013.log文件创建硬链接hlink2013    

注:软链接 == 符号链接(Symbolic Link)

功能:为某个文件在另外一个位置建立一个同步的链接

不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁盘空间

硬链接是产生一个档案,该档案以文件副本的形式存在,但不占用实际空间大小

软链接是产生一个档案,该档案的内容是指向另一个档案的位置,占用空间很小

硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统

创建的硬链接其inode与原文件一样,创建的软链接其inode与原文件不同(la -i查看inode)

硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)

硬链接

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,这个编号被称之为索引节点号(Inode Index),也就是常说的inode号(使用ls -i可查询文件inode号),根据inode号可索引到对应数据块

Linux中文件的软链接和硬链接_第1张图片

硬链接是直接将文件名与索引节点号(即inode号)链接,inode号可以对应一个或多个文件名(如上硬链接后有两个文件名:hard link 和 filename),并且这些文件名可以在同一或不同目录,相当于多个相同或不同的文件名对应一个inode号,指向硬盘中相同的data block

输入命令ll后显示信息的第二列可查看data block的硬链接数量;

硬链接文件有以下特点:

1.文件有相同的inode号及data block,这使得修改其中一个硬链接文件属性或文件数据时,其他硬链接文件都会发生相应修改;

2.只能对已存在的文件进行创建;

3.不能跨文件系统(即分区)进行创建

4.删除其中一个硬链接(包括原文件)文件时,不会对其他硬链接文件产生影响,删除文件时,递减链接数,当链接数为0时,对应的data block才真正被删除

需要注意的是:在删除时,若直接用键盘【del】或者鼠标右键删除时,仅仅将其丢入回收站,文件依然存在,因此硬链接数不会变化,只有删除回收站中的文件后,对应的硬链接数才会减少

硬链接文件的大小:

创建一个文件:www.txt,随机输入如下内容,输入ll命令查看信息发现,该文件大小为193个字节:

Linux中文件的软链接和硬链接_第2张图片

 再创建一个硬链接,文件名为wwwh1.txt,输入ll查看信息,可以发现链接数变为了2,链接文件大小也是193

Linux中文件的软链接和硬链接_第3张图片

Linux中文件的软链接和硬链接_第4张图片

 更改文件内容为如下,再输入ll查看信息,发现不仅原文件大小变了,而且链接文件大小也变了

 前面说到硬链接是对文件的inode进行拷贝,指向相同的内存空间,这里为什么会显示占用了与原文件一样的内存大小?其实这里显示的文件大小,并非硬链接文件的大小,而是其所指向的内存空间的大小,因此才会出现一样的情况,查看真实的硬链接文件大小应当用命令:du -h 文件名

 Linux中文件的软链接和硬链接_第5张图片

可以看到硬链接文件大小占用了4k字节的空间

软链接

软链接类似于Windows的快捷方式。它实际上是一个特殊的文件,有自己的索引节点号(即inode号)以及用户数据块(data block),但data block中包含的是原文件的位置信息

Linux中文件的软链接和硬链接_第6张图片

软链接有如下特点:

1.软链接有自己的文件属性、inode号和data block,但是编辑文件其实就是编辑源文件;

2.可以对不存在的文件或目录进行创建;

3.可以跨文件系统(即分区)进行创建,使用ln命令跨文件系统创建时,源文件必须是绝对路径,否则为死链接;

4.可以对文件或目录文件进行创建;

5.删除软链接并不影响源文件,但源文件被删除,则相关软链接文件变为死链接(dangling link),若源文件(原地址原文件名)重新被创建,则死链接恢复为正常软链接  

总结:

编辑硬链接文件和软链接文件都会改变原文件

硬链接看链接数,删除一个硬链接文件(或原文件),链接数递减,链接数到0时数据块被彻底删除

软链接看原文件,删除原文件将导致软链接变为死链接,只有恢复原文件才能让死链接恢复

你可能感兴趣的:(slam学习,linux,运维,服务器)