首先我们需要了解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号。

linux系统中的硬链接和软链接的更多相关文章

  1. [转帖]详解Linux系统inode原理--硬链接、软链接、innodb大小和划分等

    详解Linux系统inode原理--硬链接.软链接.innodb大小和划分等 原创 波波说运维 2019-07-17 00:03:00 https://www.toutiao.com/i6713116 ...

  2. 『学了就忘』Linux基础命令 — 22、Linux中的硬链接和软链接

    目录 1.文件和目录的基本存储 2.In命令介绍 (1)我们来看看ln命令的基本信息 (2)ln命令的基本格式 3.创建硬链接 (1)如何创建硬链接 (2)硬链接特征 (3)硬连接原理 4.创建软链接 ...

  3. Windows中的硬链接和软链接(hard link 和 Symbolic link)

    先来了解一下Linux中的硬链接和软链接: Linux中的硬链接和软链接 Windows中的硬链接和软链接: 硬链接 从Windows NT4开始,NTFS文件系统引入了HardLink这个概念,它让 ...

  4. Linux 运维之硬链接与软链接详解

    了解这个的时候不如先知道下文件吧. 我们知道文件都有文件名与数据,但是呢这个在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata). 用户数据,即文件数据块 ...

  5. Linux中的硬链接和软链接

    软链接和硬链接 命令ln ln是创建链接的命令: 创建硬链接:ln file link 创建软链接:ln -s file link 硬链接 硬链接(hard link)是Unix系统最早的创建链接的方 ...

  6. linux中的硬链接和软链接是什么

    Linux 文件系统最重要的特点之一是它的文件链接.链接是对文件的引用,这样您可以让文件在文件系统中多处被看到.不过,在 Linux 中,链接可以如同原始文件一样来对待.链接可以与普通的文件一样被执行 ...

  7. Linux中的硬链接和软链接的概念、区别及用法

    概念: 硬链接(hard link): A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指 ...

  8. 【Linux】Linux系统硬链接和软链接

    在linux系统中有种文件是链接文件,可以为解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link). 查看lin ...

  9. Linux系统硬链接和软链接说明 - 运维笔记

    在linux系统中有种文件是链接文件,可以用来解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link).先来查看下 ...

随机推荐

  1. final阶段20191121-5 Scrum立会报告+燃尽图 01

    此作业要求参见:http://edu.cnblogs.com/campus/nenu/2019fall/homework/10065 一: 组名:组长组 组长:杨天宇 组员:魏新  罗杨美慧   王歆 ...

  2. FPGA之IO信号类型深入理解

    在FPGA设计开发中,很多场合会遇到同一根信号既可以是输入信号,又可以是输出信号,即IO类型(Verilog定义成inout). 对于inout型的信号,我们既可以使用FPGA原语来实现,也可以使用V ...

  3. 【题解】Vijos1404 遭遇战(最短路图论套路)

    [题解]Vijos1404 遭遇战(最短路图论套路) 感觉一定要有建模的思想,不管什么东西要抽象建模之后再用算法解决... 求最短代价就可能可以用最短路,这句话不是强行解释,而是因为图论建模过后,可能 ...

  4. Linux 文件系统 -- inode 笔记

    什么是 inode inode 的定义:Unix 文件系统中的一种数据结构,用来存储文件的元信息数据   文件在硬盘中的存储是以"块"(block)为单位的,常见的块大小是 4k ...

  5. CSS3(4)---动画(animation)

    CSS3(4)---动画(animation) 之前有写过过渡:CSS3(2)--- 过渡(transition) 个人理解两者不同点在于 过渡 只能指定属性的 开始值 与 结束值,然后在这两个属性值 ...

  6. 1032 挖掘机技术哪家强 (20 分)C语言

    题目描述 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入描述: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每 ...

  7. 小小知识点(三十九) 正交频分复用OFDM的基本原理及实现

    引言 符号间干扰(ISI)是无线传输系统设计中需要考虑的因素,采用什么样的处理方法取决于数据传输速率或等效传输带宽来决定 (1)若数据速率低且与信道最大延迟相比符号持续时间较长,那么就可能无需任何均衡 ...

  8. Python 线性回归(Linear Regression) 基本理解

    背景 学习 Linear Regression in Python – Real Python,对线性回归理论上的理解做个回顾,文章是前天读完,今天凭着记忆和理解写一遍,再回温更正. 线性回归(Lin ...

  9. 【Javascript函数】节流throttle和间隔控制dbounce

    一.throttle 函数节流,指把很小时间内触发的N多事件,节流成1个事件. 我们这里说的throttle就是函数节流的意思.再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制.主要应用 ...

  10. 生产环境中使用docker注意点

    是否对容器使用的资源进行合理限制,比如内存 CPU 网络带宽等. 是否设置合理的网络访问限制,如 非root用户 iptables. 是否有在docker无法使用时的备选方案,如提供非docker环境 ...