菜鸟学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的更多相关文章
- Linux文件链接hard link与symbolic link
Linux中文件链接有两种方式,一种是hard link,又称为硬链接:另一种是symbolic link,又称为符号链接.要区分两者的不同要回顾Linux常用的ext2文件系统.这种文件系统使用in ...
- Windows中的硬链接和软链接(hard link 和 Symbolic link)
先来了解一下Linux中的硬链接和软链接: Linux中的硬链接和软链接 Windows中的硬链接和软链接: 硬链接 从Windows NT4开始,NTFS文件系统引入了HardLink这个概念,它让 ...
- Linux - 软硬链接,hard link and symbolic link
- 【菜鸟学Linux】Cron Job定期删除Log(日志)文件
以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长 ...
- 菜鸟学Linux命令:nohup命令启动程序
在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止. 要实现守护进程,一种方法是按守护进程的规则去编程,比较麻烦:另一种方法是仍然用普 ...
- 菜鸟学Linux命令:lsof命令 查找指定用户、进程、端口打开的文件
lsof,list open files, 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件. 命令格式:ls ...
- 菜鸟学Linux命令:tar命令 压缩与解压缩
tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件. tar最初被用来在磁带上创建档案,现在,用户可以 ...
- 菜鸟学Linux命令:ssh命令 远程登录
1.查看SSH客户端版本 有的时候需要确认一下SSH客户端及其相应的版本号.使用ssh -V命令可以得到版本号.需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用Op ...
- 菜鸟学Linux命令:chmod命令和数字文件权限
chmod是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数.只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权限 ...
随机推荐
- Java并发编程的艺术,解读并发编程的优缺点
并发编程的优缺点 使用并发的原因 多核的CPU的背景下,催生了并发编程的趋势,通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升. 在特殊的业务场景下先天的就适合于并发编程. 比如在 ...
- npm安装使用淘宝代理的方法(设置registry参数)
公司防火墙问题导致 npm下载失败,安装使用cnpm不知道什么原因抽筋, 还有一个简单的办法,就是npm安装模块时,设置代理: npm install -g vue-cli --registry=ht ...
- Python接入支付宝进行PC端支付
1. 支付宝开放平台登录,使用支付宝账号登录 https://open.alipay.com/platform/home.htm 2.选择沙箱模式 [支付宝提供了测试环境] https://docs ...
- Vue.js(2.x)之Class 与 Style 绑定
1.前面看数据绑定时还很困惑v-bind处理class时可以使用json格式的值,为什么换成id.href等其他属性就不行.看了下文档解释后明白了些: 2.对象语法主要有以下三种形式: 1)直接在v- ...
- eCharts图表(polar极坐标图)
极坐标图 HTML: <div id="eChart"></div> css: #eChart{ width:500px; height:500px; } ...
- <Android 基础(五)> MVVM
介绍 MVVM,Model-View-ViewModel,与上次讲的MVP模式比较的类似,MVP中需要大量的接口文件,而MVVM模式下,View和ViewModel直接关联,使用上比较方便,简化了代码 ...
- 关于com工程依赖的一些总结
作者:朱金灿 来源:http://blog.csdn.net/clever101 一是com组件工程的依赖设置.比如A这个组件工程要使用B组件工程的类,要如何设置呢?具体就是先把在A工程里加上B工程的 ...
- Unity光晕剑效果的Shader简单实现
最近遇到了一个需求,想要一种在刀剑上带有光晕的酷炫效果,甚至是还想要有闪烁呼吸效果,于是就写了一个简单的叫LightSwrod的Shader去实现,先上图看看效果吧. 简单展示 这是剑本身的样子 这是 ...
- 使用kubeadm搭建Kubernetes集群
记录在石墨日记中,经常更新,懒得再复制了,直接点击下面链接查看吧 移步到此: https://shimo.im/docs/22WbxxQa1WUV9wsN/
- pat乙级1067
1.用cin输入数据后,再用getline 输入,还是会输入cin已经输入的数据,即cin和getline互相独立. 2.题目中没有说尝试的密码不包含空格,因此不能用cin,而用getline. #i ...