Linux下软链接与硬链接

硬链接就是同一个文件使用了多个别名(他们有共同的inode编号)。
硬链接可由命令link或in创建,如

link existing-file new-link
ln existing-file new-link

由于硬链接有着相同的inode编号,因此,删除一个硬链接文件并不影响其他有相同inode号的文件

硬链接不能对目录进行创建,只可对文件进行创建
硬链接只有在同一文件系统中的文件之间才能建立

ls -l后中的1,2代表文件的硬链接数目

➜ ls -l
total 120
-rw-rw-r--  1 cherry  staff   6517  9  8  2015 BPMDetect.h
-rw-rw-r--  2 cherry  staff   7507  9  8  2015 FIFOSampleBuffer.h

ls -i 显示文件对应的inode编号,可以看到Makefile.am和Makefile.am.link的文件inode编号相同。

➜ ls -i
3739963 BPMDetect.h            3739962 FIFOSamplePipe.h       3739961 Makefile.am.link       3739960 SoundTouch.h
3739957 FIFOSampleBuffer.h     3739961 Makefile.am            3739959 STTypes.h              3739958 soundtouch_config.h.in

软链接(soft link)(也叫符号链接(symbolic link))与硬链接不同,文件用户数据块中存放的内容是另一文件路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。
用户对符号文件进行读与写操作的时候,系统会自动把该操作转换为对原文件的操作,但是删除符号链接文件时,系统仅仅删除符号链接,而不删除源文件本身。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接就变成了死链接。

符号链接的一个很大的优势是它可以指向不存在的文件。此优势使得可以为某个间断性被删除和创建的文件建立链接。符号链接可保持对已删除文件的指向,即使已经创建了一个新文件,而符号链接总是指向新创建的文件,而不干涉旧文件的删除。例如:符号链接可以指向一个需要在源代码控制系统下进行登记和检验的文件,或者指向一个每运行一次make由c编译器重新创建的.o文件,或者指向一个周期性存档的日志文件。

软链接可对文件或目录创建。

ln -s old.file soft.link
ln -s old.dir soft.link.dir

加-s选项代表创建的是软链接。

ls -l 软链接的属性:

➜  include ln -s Makefile.am m
➜  include ls
m Makefile.am       
➜  include ls -l
total 128
lrwxr-xr-x  1 cherry  staff     11  4 12 13:46 m -> Makefile.am
-rw-rw-r--  1 cherry  staff   1202  9  8  2015 Makefile.am

cp与ln
cp创建了文件的副本,ln命令没有创建文件的副本,修改其中一个文件的内容在其他链接文件中均可看到。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值