zoukankan      html  css  js  c++  java
  • linux系统中的硬链接和软链接

    首先我们需要了解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.
    ";
                    }
    };
    
    int main()
    {
            cout << "This is displayed before the object is created .
    ";
    
            Demo demobj;
    
            cout << "This is displayed before the object is treated .
    ";
            return 0;
    }
    命令:cat sh1.cpp #include
    <iostream> using namespace std; class Demo { public: Demo() { cout << "Now the constructor is running. "; } }; int main() { cout << "This is displayed before the object is created . "; Demo demobj; cout << "This is displayed before the object is treated . "; return 0; }

    硬链接的特点

    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号。

  • 相关阅读:
    BZOJ3514:GERALD07加强版(LCT,主席树)
    BZOJ2729:[HNOI2012]排队(组合数学)
    BZOJ4517:[SDOI2016]排列计数(组合数学,错排公式)
    BZOJ3123:[SDOI2013]森林(主席树,启发式合并)
    BZOJ3786:星系探索(Splay,括号序)
    BZOJ2212:[POI2011]Tree Rotations(线段树合并)
    BZOJ5329:[SDOI2018]战略游戏(圆方树,虚树)
    CF613D:Kingdom and its Cities(树形DP,虚树)
    BZOJ3611:[HEOI2014]大工程(树形DP,虚树)
    BZOJ2286:[SDOI2011]消耗战(树形DP,虚树)
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/12153379.html
Copyright © 2011-2022 走看看