ln命令中,man-pages里说了一些关于ln与ln -s的区别,软硬链接的不同点,有点模糊,查阅了网络上大家的总结,自己也总结下
ln *source *target 默认产生一个硬链接,
ln -s *source *target 加上参数-s,建立软链接
区别
1、 软链接可以跨文件系统,比如你要链接一个windows共享文件夹下的某文件至linux里,软链接可以,而硬链接不行,硬的只能在一个分区里
2、inode节点问题,硬的不管有多少个,均指向一个inode,每创建一个硬链接,会产生一个(大小、权限、inode、时间)一致的文件,并增加1个链接数,它们是绝对平等的,可以通过ls -il命令查看详细的inode和连接数。
软链接,是产生一个很小的具有新inode的文件,有点类似win中的“快捷方式”,它存放的是指向源文件路径的指针,是个全新的文件
删除一个硬链接,只会减少连接数,直到删除最后一个连接数为1的文件,就是彻底删除了此文件
删除一个软链接文件,无区别。删除源文件的话,软连接则指向了一个空文件
(关于inode节点,我的理解是存放在磁盘空间的一个地址,所有的文件都具有一个inode用来指向磁盘里的实际存储位置,有误的话欢迎指正)
3、软的可以链接目录,而硬的不行
一般我们都是采用软链接的方式给文件链接,因为可以跨分区和文件系统。
还有个值得注意的是,不管是修改软链接还是硬链接文件,所有的文件都是同步修改的,这是软硬的共性
编辑回复