Linux 硬链接 软连接

情景说明:

有时候在Linux下我们有一个大的工程跟绝对路径相关,现在又想通过eclipse查看源码和修改源码,那么问题来了:

1.如果我们把源码拷贝一份到eclipse工程里面,那么此时修改了某个文件之后还得手动复制到可以运行的原始工程目录下,这样操作很麻烦。

2.如果直接重新把源码部署在eclipse下面,势必要修改很多路径才能让这个工程在新的路径下正常运行

解决办法:创建软连接   ln  -s /xxxxxx/test  workspace/myproject


疑问:

什么是软链接?和硬链接有什么区别?


下面一段来自百度百科:

硬链接与软链接的区别


在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)
硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反都是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接。



说简单点

1.修改软连接或者硬链接都会导致源文件改变,可以达到同步的目的

2.删除软链接或者硬链接文件都不会删掉原始文件

3.删除源文件会导致软连接失效 ,而硬链接文件还是完整的

4.很重要的一点,可以建立目录的软连接但是不能建立硬链接,只能对文件建立硬链接,这也是上面对工程建立链接为什么选择软连接的原因


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。