菜鸟学Linux - Hard Link与Symbolic Link

在学习Hard Link与Symbolic Link之前,需要大概了解一下inode与data block。在Linux的文件系统中,一个文件对应一个inode与若干个data block。inode与data block都通过编号来标识,例如第30333个inode,第20334个data block。inode中记录着文件的属性,如文件的所有者、所属用户组、对文件的权限以及指向data block的指针。文件的真正内容是存放在data block中的。一个文件的内容,被分割成若干部分保存在不同的data block中,通过inode可以找到文件对应的所有data block。使用ls命令并打开-i选项就可以查看文件的inode编号:

在Linux中,有两种不同的Link:

Hard Link:这种Link不会占用磁盘空间。例如,现在有一个名为JonathanFileHL的Hard Link指向JonathanFile.txt,实际上,JonathanFileHL和JonathanFile.txt具有相同的inode。如下面的示意图:

Symbolic Link:这种Link会实际赞用磁盘空间。例如,现在有一个名为JonathanFileSL的Symbolic Link指向JonathanFile.txt,JonathanFileSL将会有独立的inode以及data block。源文件的文件名保存在Symbolic Link的。对源文件重命名或者删除,将会导致Symbolic Link失效。后面将会通过例子证明。Symbolic Link的示意图如下:

创建Link的命令为ln,如果指定了-s选项,那么将会创建Symbolic Link,否则就是Hard Link。为了验证是否占用磁盘空间,现在先查看一下JonathanTestFolder这个文件夹的使用磁盘情况:

现在来创建Hard Link:ln JonathanFile.txt JonathanFileHL

由结果可知,Hard Link确实不会占用磁盘空间,同时inode与源文件相同。Symbolic Link就得占用磁盘空间了,下面来创建一个Symbolic Link:ln -s JonathanFile.txt JonathanFileSL

可见,Symbolic Link确实会占用磁盘空间。此外,正如上文所说,如果修改了源文件的名称或者删除源文件,Symbolic Link将会失效,但是不会对Hard Link有影响:

原因上文也交代了:Symbolic Link会通过源文件名去定位,而Hard Link通过inode去定位。更多关于ln的用法,还是man一下吧。

菜鸟学Linux - Hard Link与Symbolic Link

时间: 2024-12-30 11:57:51

菜鸟学Linux - Hard Link与Symbolic Link的相关文章

菜鸟学Linux - 文件/文件夹的隐藏属性

文件/文件夹居然还有隐藏属性?没错,隐藏属性对于文件/文件夹的安全很重要.好比如说,我们需要使用”鉴定符“来揭开装备的隐藏属性:在Linux中chattr/lsattr就是“鉴定符”. chattr基本格式为:chattr +-=[acdeijstuADST] .+表示增加某种隐藏属性:-表示取出某种隐藏属性:=表示直接设置隐藏属性.man chattr可知: The letters ‘acdeijstuADST’ select the new attributes for the files:

【菜鸟学Linux】Cron Job定期删除Log(日志)文件

以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长很快,所以需要用脚本(Bash scripts)删除过期的Log文件. 使用Linux下的Cron Job可以很好的解决这个问题. 什么是Cron Job? 建立Cron Job需要用到命令crontab,维基百科定义:crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.

【菜鸟学Linux】gzip解压报错:gzip: stdin has more than one entry--rest ignored

lz Linux菜鸟一枚,今天想用gzip解压下压缩包,据说Linux默认不支持rar压缩,需要安装组件. so,lz我特意zip压缩了一个文件上传上去解压,记得之前测试的时候都ok的正常解压:tar -zxvf  XXX.zip 不知道今天啥情况..难道是我之前重新搭建过环境的原因,用tar就报错.. 然后lz我多方查证,终于解决了问题,特来分享,不喜勿喷! 解决方法:改用unzip解压:unzip XXX.zip 报错原因:ar命令也是调用了gunzip命令的 [菜鸟学Linux]gzip解

Linux文件链接hard link与symbolic link

Linux中文件链接有两种方式,一种是hard link,又称为硬链接:另一种是symbolic link,又称为符号链接.要区分两者的不同要回顾Linux常用的ext2文件系统.这种文件系统使用inode与block,其中inode记录文件数据所存储的block序号,而block用于存储数据.至于跟进一步的文件系统,分割盘,block group,meta data什么的这里不讲,有兴趣的同学参阅<鸟哥的Linux私房菜>. 硬盘的硬件以inode和block分割,但我们直观可见的目录如何存

hard link与symbolic link区别

Linux下的文件组织方式是每个文件都占用一个inode,inode中存放有文件的权限信息.block信息等,可以理解为索引文件系统,通过inode索引到对应的block,即读取文件. hard link hard link其实就是多个文件连接到同一个inode,因此,这两个文件的信息几乎是一模一样的,hard link有以下特点: 1)你将两都中的任何一个删除,文件都不会被删除,你仍然可以通过另一个文件名来读取文件数据: 2)通过任一文件名来修改该文件数据都是一样的结果: 3)不同的文件系统文

菜鸟学linux之五Linux文件与目录管理第二节

环境变量PATH 在环境变量之前先介绍一个命令 which, 它用来查找某个命令的绝对路径. [[email protected] ~]# which rmdir /bin/rmdir [[email protected] ~]# which rm alias rm='rm -i' /bin/rm [[email protected] ~]# which ls alias ls='ls --color=auto' /bin/ls 'rm' 和 'ls' 是两个特殊的命令,使用alias 命令做了

菜鸟学Linux 第003篇笔记 Linux操作系统和常用命令1

认证:Authentication 授权:Authorization 审计:Audition (log日志) magic number:魔数 pwd:Print Working directory  显示当前路径 list: ls  用来列出当前目录或指定目录下的文件默认显示当前目录 选项 -l 显示文件属性 文件属性 第1位所显示字符的含义 -:普通文件 d:目录文件 b:块设备文件(block) c:字符设备文件(character) l:符号链接文件(symbolic link file)

菜鸟学Linux之:CentOS7下的单用户模式

作为Linux初学者的我们,大家有时候可能会忘记root的密码从而使自己手忙脚乱,有些人可能不得已会选择重装系统,学了这个操作后就可以轻轻松松搞定忘记密码的问题如图在已打开的虚拟机选择重启虚拟机在此界面按上下箭头,然后按字母"e"进入grub页面寻找"Linux16"的那行,将字符"ro"改为"rw",然后将"rhgb quiet"删除,在"LANG=en_US.UTF-8"后写入&qu

菜鸟学Linux - bash的配置文件

bash是各大Linux发行版都支持的shell.当我们登陆bash的时候,虽然我们什么都没做,但是我们已经可以在bash中调用各种各样的环境变量了.这是因为,系统中已经定义了一系列的配置文件,以及加载这些配置文件的规则.下面通过CentOS举例说明.在这之前,我们需要了解两个概念:login shell与non-login shell.很明显,这二者的区别在于需不需要login,同时这两种shell加载配置文件的规则也不相同. login shell:通俗的讲,当我们登陆shell时,需要输入