一、软连接文件node
软连接文件和硬连接文件都属于连接文件。软连接相似于 windows 的快捷方式。
见下图例子,
上图红色框框中的 /bin 就是一个软连接文件,真正指代的是 usr/bin 。因此命令其实应该是写成 ls -l /usr/bin ,/bin/ls 其实就是 /usr/bin/ls ,几个命令均可以执行,结果也是同样的。
软连接说白了,就是在一个文件里存放另外一个文件的路径,软连接的大小和路径是有关系的,路径越长,软连接占用的内存越大。来看一下在哪一个文件下面软连接比较多。见下图,
这些粉绿色的文件就是软连接文件,它真正的文件就是后面指代的文件。软连接在拷贝文件的时候比较好用,能够大量节省空间。见下图,
将目录 /tmp/ 下的文件 yum.log 作个软连接到目录 /root/111/yum.log ,一开始显示权限不够,是由于有 i 或 a 权限,使用 chattr 命令将 i 和 a 权限去掉之后,就能够执行命令 ln -s /tmp/yum.log /root/111/yum.log ,将文件 /tmp/yum.log 作软连接到 /root/111/yum.log ,执行命令 ls -l /root/111/ ,就能够查看到文件 yum.log 的软连接文件和后面指代的真正文件。
综上,软连接命令就是, ln -s + 源文件 + 软连接文件 。
软连接不只能够连接文件,也能够连接目录。见下图,
上图中,粉绿色的目录就是软连接目录,后面指代的真正目录比较特殊,是绝对路径,以根 / 开头。跟上面查看的目录 /lib64/ 不同,目录 /lib64/ 里面的路径都是相对路径。
如今作一个实验,把 yum.log 文件作一个软连接,命名为 lyslinux.log 。见下图,
上图中的软连接就是相对路径,设置的这个软连接仅仅是在当前目录下,不过这样作会有一些弊端,若是换一台服务器以后,这个相对路径就会失效,软连接文件会打不开。因此,工做中要尽可能使用绝对路径来设置软连接。
来举个例子,见下图,
上图中建立了一个 root 下不存在的文件 lyslinux.log ,而后设置软连接,查看的时候,文件变成红色的,还一直在闪,这说明这个文件是不存在的。由于这个软连接文件是当前目录下不存在的文件,见下图,
红色就是不存在的文件,接着用命令 touch 在目录 123 下面新建一个 yum.log 文件,再来查看,就恢复正常了,lyslinux.log 就变成软连接文件了。
以上,就是为了说明,作软连接的时候,要使用绝对路径。linux
有个工做中常常用到的例子,见下图,
df -h 这个命令是用来查看磁盘分区的,之后会讲到。如今来假设 /boot/ 磁盘的空间即将使用彻底,若是空间不足,会形成不少问题,也会致使系统不能正常使用。如今就须要清理空间,才能够继续正常使用。咱们能够把即将装满的磁盘 /boot/ 上的日志或文件移动到其余内存较大且使用量不多的磁盘上去,好比 / 根。可是这个操做是有前提的,不能动这个文件的路径。
咱们的思路是:先将文件内容拷贝到空间较大的磁盘目录里,而后将原目录下的文件删除,这样就能够释放原目录的磁盘空间,接着作一个软连接操做将拷贝的文件软连接到原目录下,这样一来,服务在执行的时候,仍是将内容写到原目录下的,但其实是软连接到拷贝的目录上去。磁盘空间获得有效释放。windows
二、硬连接文件服务器
上图中红色框框内的数字,表示有几个文件使用了和这个文件相同的 inode 号。通常文件的话,一般这个数字都是 1 ,说明没有另一个文件使用相同的 inode 号。可是目录比较特殊,下面会有子目录,包括目录 . 和目录 .. ,这些目录的数量就是红色框框里面的数字。markdown
如今要介绍的硬连接和目录没有关系,也就是说硬连接不支持目录,只支持文件。如今对文件 1.txt 作硬连接和软连接,见下图,
上图中,咱们是对文件 1.txt 作硬连接和软连接,软连接上面说过了,能够看到软连接占用的空间很是小,才 5 KB,而硬连接占用的内存 65 KB,且和原文件 1.txt 的空间大小是同样的,建立时间也是同样的。再看一下他们俩的 inode 号,都是 33582997 。也能够看到这俩文件前面的数字都是 2 ,这说明有两个文件使用了同一个 inode 号,但实际上这个不太好区分。想找一个文件的硬连接文件很差找,除非是本身建立的,不过很差找不表明找不到,使用 find 这个命令能够找出来,后面会说。
简单来讲,就是建立一个文件,这个文件和另一个文件的 inode 号同样,这两个文件相互为硬连接文件。这两个文件是同样的,没有像软连接那样有原文件和快捷方式之分。而软连接的原文件是不能删除的,不然软连接文件就失效了。硬连接呢?见下图例子,
上图把文件 1.txt 删除掉,再查看,能够看到软连接文件显示红色,软连接后面指代的真正文件显示红色而且在闪。说明软连接文件失效,只剩下路径了。而硬连接文件还在,不受影响,只不过文件前面的 inode 号变成 1 了。因此,硬连接删不删原文件是不受影响的。
咱们能够理解为,硬连接的文件名只是一个门面,真正保存信息的文件在 inode 上,见下图,
inode 是文件系统里的特殊存在,它会记录文件的属性。因此硬连接实际上就是多一个文件指向 inode ,真正的文件在 inode 里面。并且硬连接不会多占空间,由于 inode 就一个。真正占内存的就是 inode ,硬连接只是显示 inode 的一个存在,多几个都不会有什么影响。
不能对目录作硬连接,来试一下,见下图,
硬连接只能针对文件,也是有前提的,不能跨分区,见下图,
上图中的解释是,这两个分区存在相同的 inode 文件。ide
总结:
一、能够对文件作硬连接,不能对目录作硬连接;
二、不能跨分区作硬连接,由于每一个分区都存在相同的 inode 文件。
三、硬连接能够删除,由于还有其余的文件使用了同样的 inode ,可是不能把全部相同 inode 的文件都删除掉,总要留一份的。日志