首先我们需要了解linux下硬链接以及软连接的基本概念.
硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.
软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.
下面详细介绍一下硬链接和软连接之间的区别.
1.硬链接和原来的文件没有什么区别,而且共享一个 inode 号(文件在文件系统上的唯一标识);而软链接不共享 inode,也可以说是个特殊的 inode,所以和原来的 inode 有区别。
2.若原文件删除了,则该软连接则不可以访问,而硬连接则是可以的。
3.由于符号链接的特性,导致其可以跨越磁盘分区,但硬链接不具备这个特性.
硬链接(hard link) ln
命令格式为:ln [选] 源文件 目标文件

选项:如果不加"-s",则建立硬链接文件。 加"-s",则建立软链接。

-f:强制,如果目标文件已经存在,则删除目标文件后在建立链接文件。

演示如下

命令为:ln sh1.cpp hard
命令:cat hard
#include<iostream> using namespace std; class Demo
{
public:
Demo()
{
cout << "Now the constructor is running.\n";
}
}; int main()
{
cout << "This is displayed before the object is created .\n"; Demo demobj; cout << "This is displayed before the object is treated .\n";
return ;
}
命令:cat sh1.cpp
#include<iostream> using namespace std; class Demo
{
public:
Demo()
{
cout << "Now the constructor is running.\n";
}
}; int main()
{
cout << "This is displayed before the object is created .\n"; Demo demobj; cout << "This is displayed before the object is treated .\n";
return ;
}

硬链接的特点

1.不论是修改源文件还是修改硬链接文件,另一个文件中的数据都会发生改变。

2.不论是删除源文件还是删除硬链接文件,只要有一个文件存在,这个文件都会被访问。

3.硬链接不会建立新的inode信息,也不会更改inode的总数。

4.硬链接的限制比较多,即不能跨文件系统。也不能链接目录,而且源文件和硬链接文件之间除了inode号是一样的之外,没有其他的明显的特征。

软链接(symbolic link) ln-s
软链接可以直接建立,也可以通过目录建立。

演示如下:

直接建立软链接
命令:ln -s sh2.cpp soft
通过目录(必须用绝对路径)建立软链接
命令:ln -s /home/qqtsj/cpp/sh3.cpp /home/qqtsj/cpp/swor 下面软链接建立完成,查看
命令:ls -l
-rw-rw-r-- 1 qqtsj qqtsj 289 11月 7 18:52 size.cpp
lrwxrwxrwx 1 qqtsj qqtsj 7 1月 5 19:27 soft -> sh2.cpp
lrwxrwxrwx 1 qqtsj qqtsj 23 1月 5 19:30 swor -> /home/qqtsj/cpp/sh3.cpp
-rwxrwxr-x 1 qqtsj qqtsj 29336 11月 12 17:07 tate
-rwxrwxr-x 1 qqtsj qqtsj 13280 11月 10 20:38 tate1
-rw-rw-r-- 1 qqtsj qqtsj 677 11月 10 20:46 tate1.cpp
-rw-rw-r-- 1 qqtsj qqtsj 0 11月 10 20:37 tate2.cpp

软链接的特点

1.不论是改变源文件,还是改变软链接文件,另一个文件中的数据都会发生改变。

2.删除软链接文件,源文件不受影响,而删除源文件,软链接文件将找不到实际的数据,从而显示文件不存在。

3.软链接会新建自己的inode信息和block,只是在block中不存储实际文件数据,而存储的是源文件的文件名和inode号。

4.软链接可以链接目录,可以夸分区。

硬链接和软链接在原理上最大的不同在于:硬链接不会建立自己的inode索引和block(数据块),而是直接指向源文件的inode信息和block,所以硬链接和源文件的inode号是一致的:而软链接会建立自己的inode索引和block,所以软链接和源文件的inode号是不一致的,而且在软链接的block中,写的不是真正的数据,而仅仅是源文件的文件名和inode号。

最新文章

  1. BZOJ AC800纪念
  2. 各种模板(part 2)
  3. jquery 中substring,substr,split的用法
  4. (转)CSS 为不同大小的浏览器视窗使用不同的样式表
  5. Reveal-Plugin-for-Xcode 自动结合 Reveal 进行 UI 分析
  6. load get selectone 或者selectlist 以及hql查询语句不用提交事务
  7. 数据绑定之DataFormatString
  8. HTTP头信息(转)--1
  9. 正确的 zip 压缩与解压代码
  10. ALV 数值列负号前置 (EDIT_MASK应用)
  11. testing and SQA_动态白盒測试
  12. centos7 crontab笔记
  13. angular ng build --prod 打包报错解决方案
  14. 使用Dockerfile自定义一个包含centos,tomcat的镜像
  15. 在SQL中查询某列具有相同值的数据
  16. [翻译] 使用 Visual Studio 2019 来提高每个开发人员的工作效率
  17. innobackupex
  18. c# speech 文本转语言
  19. linux命令总结vmstat命令
  20. [转]RedHat Enterprise Linux 7关闭防火墙方法

热门文章

  1. 解决模糊查询问题 element UI 从服务器搜索数据,输入关键字进行查找
  2. 【题解】P1373 小a和uim之大逃离
  3. 洛谷$P2605\ [ZJOI2010]$基站选址 线段树优化$dp$
  4. $SP15637\ GNYR04H\ -\ Mr\ Youngs\ Picture\ Permutations$
  5. promethues安装
  6. C#录制视频
  7. Jpa自定义查询报错(Failed to convert from type [java.lang.Object[]] to type)
  8. 观察者模式的应用:Winform窗体之间传值
  9. Spring Boot2 系列教程 (三) | 使用 LomBok 提高开发效率
  10. 曹工说Spring Boot源码(12)-- Spring解析xml文件,到底从中得到了什么(context:component-scan完整解析)