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
当源文件被删除,软链接文件失效,硬链接文件仍然正常访问。