Linux系统中,软链接文件和硬链接文件的区别

1. Linux系统中,什么是软链接文件?

  软链接类似于windows系统中的快捷方式。软链接文件其实是将inode指向源文件的block,当我们访问这个软链接文件时,其实访问的是源文件本身。那么当我们对一个文件创建多个软链接,其实就是多个inode指向同一个block。当我们删除软链接文件时,其实只是删除了一个inode指向,并不会对源文件源文件造成影响,若源文件被删除,软链接文件也会失效。

  如何创建软链接文件

[root@oracle12c tmp]# ll
total 208
-rw-r--r-- 1 root root 209369 Nov  2 23:34 data.txt
[root@oracle12c tmp]# ln -s data.txt data_soft.txt
[root@oracle12c tmp]# ll -hi
total 208K
33596166 lrwxrwxrwx 1 root root    8 Nov  2 23:39 data_soft.txt -> data.txt
33554504 -rw-r--r-- 1 root root 205K Nov  2 23:34 data.txt

  特点:

    1. 软链接文件与源文件文件类型和权限不同

    2. 软链接文件与源文件大小不一致

    3. 软链接文件与源文件的inode号不相同

    4. 软链接文件对应的源文件若是被删除,则该软链接文件失效

    5. 最好以绝对路径创建软链接文件

2. Linux系统中,什么是硬链接文件?

  硬链接文件类似于一个超市的多个门,硬链接其实是同一个文件使用了多个别名,他们具有共同的 inode。

  如何创建硬链接文件 

[root@oracle12c tmp]# ln data.txt data_hard.txt
[root@oracle12c tmp]# ll -hi
total 416K
33554504 -rw-r--r-- 2 root root 205K Nov  2 23:34 data_hard.txt
33596166 lrwxrwxrwx 1 root root    8 Nov  2 23:39 data_soft.txt -> data.txt
33554504 -rw-r--r-- 2 root root 205K Nov  2 23:34 data.txt

  特点:

    1. 硬链接文件与源文件inode号相同,相反inode号相同的文件不一定是互为硬链接文件,前提是在同一个分区内

    2. 硬链接文件对应的源文件被删除后,硬链接文件仍然有效

    3. 操作系统中,目录不能创建硬链接

    4. 硬链接可以防止误删除,但是不能防止误修改。如果一个文件的硬链接数为1,删除后,将会彻底被删除。

    5. 硬链接文件与源文件的文件类型、权限、大小都相同

案例

  当删除掉源文件后,软链接文件和硬链接文件的区别

[root@oracle12c tmp]# rm -f data.txt 
[root@oracle12c tmp]# ll -hi
total 208K
33554504 -rw-r--r-- 1 root root 205K Nov  2 23:34 data_hard.txt
33596166 lrwxrwxrwx 1 root root    8 Nov  2 23:39 data_soft.txt -> data.txt
[root@oracle12c tmp]# tail  data_hard.txt 
│   ├── vars
│   └── version-groups.conf
├── yum.conf
└── yum.repos.d
    ├── backup
    │   └── redhat.repo
    ├── local.repo
    └── redhat.repo

801 directories, 3021 files
[root@oracle12c tmp]# tail  data_soft.txt 
tail: cannot open ‘data_soft.txt’ for reading: No such file or directory

   当源文件被删除,软链接文件失效,硬链接文件仍然正常访问。

posted @ 2020-11-02 23:56  小屁孩云轩  阅读(1094)  评论(0编辑  收藏  举报