软连接和硬链接的区别
在Linux的文件系统中,保存在磁盘分区中的文件(不论类型),都会分配一个编号,称为索引节点号(Inode Index)
。
硬连接
指通过索引节点来进行的连接。
在Linux的文件系统里,多个文件名指向同一个索引节点,这种连接就是硬连接。
硬链接的作用是允许一个文件用于多个有效路径名,这样用户就可以建立硬连接到重要文件,达到防止“误删”的功能。
创建硬链接,它们之间是相关联的,比如一个修改所有的硬链接文件和源文件都会随之修改。只有所有的硬链接和源文件被删除后,文件的数据块及目录的连接才会被释放,文件才会被真正删除掉。
软链接文件
有点类似于Windows的快捷方式。
创建软链接,它们之间是相关联的,如果删除源文件,软链接都会异常无法访问。
创建硬链接命令
ln /路径/源文件名 /路径/新文件名
创建软链接命令
ln -s /路径/源文件名 /路径/新文件名
实验
建议做个实验,就可以理解了
【创建测试文件test】
[root@localhost opt]# echo hello,word >test
[root@localhost opt]# ll
total 4
-rw-r--r--. 1 root root 11 Jul 5 19:05 test
[root@localhost opt]# cat test
hello,word
【创建硬链接】
[root@localhost opt]# ln test test2
[root@localhost opt]# ll
total 8
-rw-r--r--. 2 root root 11 Jul 5 19:05 test
-rw-r--r--. 2 root root 11 Jul 5 19:05 test2
[root@localhost opt]# cat test2
hello,word
【创建软链接】
[root@localhost opt]# ln -s test test3
[root@localhost opt]# ll
total 8
-rw-r--r--. 2 root root 11 Jul 5 19:05 test
-rw-r--r--. 2 root root 11 Jul 5 19:05 test2
lrwxrwxrwx. 1 root root 4 Jul 5 19:07 test3 -> test
[root@localhost opt]# cat test3
hello,word
【在test中添加数据,并查看软链接文件和硬链接文件,均已添加数据】
[root@localhost opt]# vim test
[root@localhost opt]# cat test
hello,word
mike
[root@localhost opt]# cat test2
hello,word
mike
[root@localhost opt]# cat test3
hello,word
mike
【在硬链接test2中添加数据,并查看原文件和软链接文件,均已添加数据】
[root@localhost opt]# vim test2
[root@localhost opt]# cat test2
hello,word
mike
marry
[root@localhost opt]# cat test
hello,word
mike
marry
[root@localhost opt]# cat test3
hello,word
mike
marry
【在软链接test3中添加数据,并查看原文件和硬链接文件,均已添加数据】
[root@localhost opt]# vim test3
[root@localhost opt]# cat test3
hello,word
mike
marry
john
[root@localhost opt]# cat test
hello,word
mike
marry
john
[root@localhost opt]# cat test2
hello,word
mike
marry
john
【删除原文件后,硬链接test2正常,可以独立存在,软连接test3不正常】
[root@localhost opt]# rm -rf test
[root@localhost opt]# cat test2
hello,word
mike
marry
john
[root@localhost opt]# cat test3
cat: test3: No such file or directory
[root@localhost opt]# ll
total 4
-rw-r--r--. 1 root root 27 Jul 5 19:10 test2
lrwxrwxrwx. 1 root root 4 Jul 5 19:07 test3 -> test