简单点说链接文件是linux物理文件的备份。在linux中有两种类型的文件链接:
创建一个符号链接也很简单:ln -s 文件名称 符号链接文件名称
我们先创建一个文件,再为这个文件创建一个符号链接,然后看看这两个文件有什么不同
1 | $ touch data_file |
2 | $ ln -s data_file data_file_lns |
3 | $ ls -l |
4 | total 0 |
5 | 2003950 -rw-rw-r-- 1 bingyang bingyang 0 Jun 22 19:18 data_file |
6 | 2003951 lrwxrwxrwx 1 bingyang bingyang 9 Jun 22 19:19 data_file_lns -> data_file |
可以看到data_file
的文件编号是2003950
,data_file_lns
是2003951
,所以他们两个是完全不同的文件。我们可以修改data_file
文件,保存后再打开data_file_lns
会发现就是data_file
的内容。
如果我们把data_file
删除后,再打印data_file_lns
的内容会发现找不到文件
1 | $ rm data_file |
2 | $ cat data_file_lns |
3 | cat: data_file_lns: No such file or directory |
硬链接
我们先创建一个硬链接,看看它和符号链接有什么不同,创建硬链接的命令跟符号链接一样,只是不用加-s
参数.
1 | $ ln data_file data_file_ln |
2 | $ ls -il |
3 | 2003950 -rw-rw-r-- 2 bingyang bingyang 0 Jun 22 19:30 data_file |
4 | 2003950 -rw-rw-r-- 2 bingyang bingyang 0 Jun 22 19:30 data_file_ln |
我们可以看到data_file_ln
后面没有显示一个箭头指向data_file,而且它们的文件编码是一样的,所以从根本上而言它们是同一个文件。
我们可以修改data_file
的内容输入bingyang
,保存后删除data_file
,然后打印data_file_ln
来看看结果
1 | $ rm data_file |
2 | $ cat data_file_ln |
3 | bingyang |
总结
总的来说符号链接跟硬链接的最大不同之处就是,硬链接会保存最原始文件的地址与信息,而符号链接只会保存虚拟路径的信息,所以如果对虚拟路径执行删除操作,硬链接依然能够找到源文件,而符号链接就再也找不到源文件了。