首页 > 代码库 > 软链接和硬链接
软链接和硬链接
软链接文件和硬链接文件
链接文件分为两种,硬链接(hard link)和软链接(symbolic link)。 两种链接的本质区别关键点在于inode。
硬链接:
当系统要读一个文件时,就会先去读inode table,一个文件对应一个inode,然后再去根据inode中的信息到块区域去将数据取出来。 而硬链接是直接使用了和源文件相同的inode,硬链接文件直接链接到文件放置的块区域。 也就是说,进行硬链接的时候实际上该文件内容没有任何变化,只是指定了相同的inode。
硬链接有两个限制:
(1)不能夸文件系统,因为不同的文件系统有不同的inode table;
(2)不能链接目录。
软链接:
跟硬链接不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个链接文件时,它会把读取的行为转发到该文件所link的文件上。这样讲,也许比较绕口。
例:现在有文件a,我们做了一个软链接文件b(只是一个链接文件,非常小),b指向了文件a。当读取b时,那么b就会把读取的动作转发到a上,这样就读取到了文件a。所以,当我们删除文件a时,文件b不会被删除,但是再读取b时,会提示无法打开文件。然而,当我们删除b时,a是不会有任何影响的。
看样子,似乎硬链接比较安全,因为即使某一个文件被删除了,只要有任何一个文件存在,那么该文件对应的inode就还在,那么文件就不会消失不见!不过,不幸的是,由于硬链接的限制太多了,包括无法做目录的link,所以在用途上面是比较受限的!反而是软链接的使用方向较广!
那么如何建立软链接和硬链接呢?这就要用到 ln 命令。
语法:ln [-s][来源文件][目标文件]
ln常用的选项就一个 -s, 如果不加就是建立硬链接,加上就是建立软链接。
[root@qiangzi ~]# mkdir 123[root@qiangzi ~]# cd 123 (cd命令:切换工作目录)[root@qiangzi 123]# cp /etc/passwd ./ (cp命令:拷贝)[root@qiangzi 123]# ll (ll命令:ll会列出该文件下的所有文件信息,包括隐藏的文件,而ls -l只列出显式文件,说明这两个命令还是不等同的!)总用量 12-rw-r--r-- 1 root root 1258 12月 25 01:58 passwd [root@qiangzi 123]# du -sk (du命令:du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数)20 . [root@qiangzi 123]# ln passwd passwd-hard[root@qiangzi 123]# ll总用量 16-rw-r--r-- 2 root root 1258 12月 25 01:58 passwd -rw-r--r-- 2 root root 1258 12月 25 01:58 passwd-hard [root@qiangzi 123]# du -sk20
上例中的 ll 命令等同于“ls -l”,请使用which命令查看一下。做了硬链接后,虽然两个文件大小都为1258 ,但是目录的大小并没有变化。
[root@qiangzi 123]# ll总用量 16-rw-r--r-- 2 root root 1258 12月 25 01:58 passwd -rw-r--r-- 2 root root 1258 12月 25 01:58 passwd-hard [root@qiangzi 123]# rm -f passwd (删除目录和文件)这个命令是最常用的[root@qiangzi 123]# du -sk20 . 删除源文件passwd,空间依旧不变。 [root@qiangzi 123]# cd ..[root@qiangzi ~]# in 123 456ln:"123":不允许将硬链接指向目录 硬链接不能用于目录。 [root@qiangzi ~]# mkdir 456[root@qiangzi ~]# cd 456[root@qiangzi 456]# cp /etc/passwd ./[root@qiangzi 456]# ln -s passwd passwd-soft[root@qiangzi 456]# ll总用量 4-rw-r--r-- 1 root root 1258 12月 25 02:30 passwd lrwxrwxrwx 1 root root 6 12月 25 02:30 passwd-soft -> passwd [root@qiangzi 456]# head -n 1 passwd-softroot:x:0:0:root:/root:/bin/bash [root@qiangzi 456]# head -n 1 passwdroot:x:0:0:root:/root:/bin/bash [root@qiangzi 456]# rm -f passwd[root@qiangzi 456]# head -n 1 passwd-softhead: 无法打开"passwd-soft" 读取数据: 没有那个文件或目录 [root@qiangzi 456]# ll总用量 0lrwxrwxrwx 1 root root 6 12月 25 02:30 passwd-soft -> passwd (passwd一直在闪烁) 如果删除掉源文件,则软链接文件不能读取了,而且使用命令ll查看发现颜色也变了。 [root@qiangzi 456]# cd ..[root@qiangzi ~]# ln -s 456 789[root@qiangzi ~]# ls -ld 456 789drwxr-xr-x 2 root root 4096 12月 25 02:36 456lrwxrwxrwx 1 root root 3 12月 25 02:45 789 -> 456
这说明目录时可以软链接的。
本文出自 “12350027” 博客,谢绝转载!
软链接和硬链接