Linux连接文件

一、概念

  1、什么是硬连接?  

硬链接是多个文件都指向同一个inode,硬链接知识点:
①、具有相同inode的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。
②、对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。
③、根据硬链接文件的特点,我们可以通过给文件创建硬连接的方式来防止文件误删除。
④、不论修改源文件还是连接文件,另一个文件的数据都会被改变。
⑤、硬连接不能跨文件系统。
⑥、硬连接不能连接到目录。

2、什么是软连接?

符号连接类似Windows下的快捷方式,符号链接也叫做软连接,软连接要用的多。符号连接相当于创建了一个独立的文件,这个文件会让数据读取指向它连接的哪个文件的文件名。软连接的特点:
①、可以连接到目录。
②、可以跨文件系统。
③、删除源文件以后,软连接文件也就“打不开了”。
④、符号连接文件通过->来指示具体的连接文件。
⑤、符号连接要使用绝对路径,否则连接出问题。

二、实验

1、写一个简单的C程序,编译成一个可执行文件:

1 #include <stdio.h>
2 
3 
4 
5 int main()
6 {
7         printf("Hello Linux!\r\n");
8         return 0;
9 }

 

命令行输入:gcc hello.c -o hello

 

 执行这个文件:

 

 2、创建2个硬连接:

 ln命令不带参数,默认就是创建硬连接,从上图可以看出,创建出来的硬连接(hello1和hello2)跟源文件(hello)的inode是一样的;

3、验证

3.1 验证硬连接的第②个结论:

 

 删除掉源文件(hello),hello1和hello2还是可以正常执行:

 

 由此可以验证硬连接的第②个结论。

3.2 验证硬连接的第④个结论:

  创建一个目标文件为hello.c的硬连接:

 

     修改源文件的内容:

    

 

     

 

      由此可以验证硬连接的第④个结论。

  3.3 验证软连接的第⑤个结论:

    

 

   注意,上图是一个错误的示范,因为没有使用绝对路径,所以当hello1被复制到其他的目录下时,cp命令没有使用-d参数,其实它已经不是一个软连接了,由图中可以看到它的颜色从原来的蓝色变为绿色,所以它还可以执行成功

    

 

   上图中创建软连接的方法才是正确的,应该加上绝对路径!输入ll -i hello*命令后看到软连接和源文件的inode是不一样的。

    

 

  上图中的复制方式才是正确的,应该加上参数-d,这样复制到test1目录后,hello2还是蓝色的,是一个软连接。

   3.4 验证软连接的第③个结论

    

 

posted @ 2022-04-07 01:35  沙河淘金  阅读(239)  评论(0编辑  收藏  举报