linux的硬链接和软链接
前言:
在linux的世界里,大部分情况下,文件名和inode是一对一的关系,文件一旦被删除,文件相关的inode信息就会被抹掉,文件占用的磁盘空间也会被释放。删了,就没了。
硬链接和软链接技术,让linux世界里的文件和目录具备了副本和替身的能力。
硬链接
基于inode技术,linux允许多个文件名同时指向一个inode,好处就是,我们可以用不同的文件名去访问同一个文件,每次操作对文件内容的影响会波及到所有「副本」,删除掉一个「副本」,不会影响其他文件。
增加一个硬链接文件,仅仅是inode里的「Links」属性值加一,
删除一个硬链接文件,「Links」属性值减一。
只有「Links」属性值为0时,文件才会被彻底删除,回收其占用的空间。
语法:
1 | ln sourcefile destfile |
创建完成后,用ls -i查看文件,就会发现两个文件的inode号是相同的。
如果使用vim在同一个缓冲区(buffer)中打开这两个文件:
vim sourcefile
:new sourcefile
在操作其中一个文件时,会发现另一个窗口是同步联动的。
应用:
- 多人修改同一个文件
- 重要文件备份
- 文件更新
- 节省磁盘空间
- 等。
注意:
- 无法为目录创建硬链接,但是操作系统在每个目录下创建了两个硬链接,一个是「.」,另一个是「..」,使用ls -ai可以看到这两个硬链接目录和inode号,前者代表了当前目录,后者代表了当前目录的父级目录。
- 硬链接不创建inode,所以无法跨文件系统,这一点可以由软链接实现。
软链接
软链接,类似于Windows系统中的快捷方式。
软链接会创建新的inode,inode里主要记录了源文件的路径,当访问软链接文件时,系统会帮你自动指向源文件,无论你操作的是源文件,还是软链接文件,其实你最终操作的都是源文件。
源文件删除了,软链接文件就成了无本之木,也就毫无意义,强制访问的后果就是「No such file or directory」。
语法:
1 | ln -s sourcefile destfile |
软链接可以创建目录的软链接,也能跨文件系统存在,在linux系统中被大量使用。一旦源文件/目录不存在了,软链接的使命也就完结了。
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1 | $ hexo new "My New Post" |
More info: Writing
Run server
1 | $ hexo server |
More info: Server
Generate static files
1 | $ hexo generate |
More info: Generating
Deploy to remote sites
1 | $ hexo deploy |
More info: Deployment