今天简单聊聊链接,Let's do it!
一、软硬链接
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以。
命令格式:
建立:ln (-s) source_address target_address
删除:rm -rf target_address
不加-s代表硬链接,加-s代表软链接。
软硬链接特点
软链接会在你的目标位置上生成一个源文件的镜像,其实并不占用任何储存空间或者占用极小的空间。而硬链接会在你选定位置上生成一个与源文件大小相同的文件。软硬链接均具有同步性,无论更改目标文件还是源文件都会影响其他。软链接删除源文件时,目标文件还在,但由于找不到源文件会报错。硬链接无论删除的是源文件还是目标文件,只要有一个文件存在,那这个文件依旧存在。
使用上软链接比硬链接更灵活,具体表现为:
1.软链接可跨文件系统使用,比如可以使用ln -s windowsfile.txt bb
命令将bb链接到windows的文件windowsfile.txt。但硬链接就不可以。
2.软链接可以链接目录,硬链接不可以。
解释
linux系统最关键的一个概念就是一切都是文件,即便是我们所说的是硬盘,Linux也会认为它是一个文件。而linux访问文件的方式有两种,一种是将节点号作为文件指针,另一种是通过文件路径名作为文件指针。实际上,我们每建立一个新文件,本质上建立了指向该文件的节点,它的别名才是它的文件名即路径名。硬链接直接使用节点号作为访问文件指针,每建立一个硬链接都会使节点链接数加1,只要节点链接数不为0,该文件就一直存在。软链接将文件路径别名作为文件导向,所以当删除了源文件时,别名不存在,软链接就失效了。
这就导致了一个现象:即新建一个文件test,我们对其分别建立硬链接hard与软链接soft,然后我们将test删除。我们发现通过hard仍可访问文件(系统逻辑为首先判断节点链接数不为0,则不删除源文件,尽管它的路径名已经不存在,但仍可以通过它的硬链接访问该节点标号的文件),然而soft已经失效了(系统逻辑虽然判断节点数不为0,但由于soft是通过路径别名访问文件的,所以即使文件存在,它也访问不到了)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。