Linux硬软链接

mac2024-07-21  68

Linux一切皆文件。下面是linux的顶层目录:

/|-- / 根目录 /|-- bin 存放二进制文件 /|-- boot 内核引导文件 里面有vmlinuz*, System.map*,initramfs*等文件,感兴趣的可以查一下这些文件的具体作用 /|-- etc 存放系统配置文件,比如我们常需要配置的环境变量在 /etc/profile /|-- home home目录是用户的宿主目录,一个用户登录系统,进入后, 所处的位置就是/home。通常用来保存用户的文件 ,cd ~ /home均可以 /|-- lib 动态共享库 /|-- lost+found 文件系统恢复时的恢复文件 /|-- media 可以卸载存储介质挂载点 /|-- mnt 文件系统临时挂载点 /|-- opt 附加的应用程序包 /|-- proc 系统内存的映射目录 提供内核与进程信息 /|-- root root用户主目录 /|-- sbin 存放系统二进制文件 /|-- srv 存放服务相关数据 /|-- sys 虚拟文件系统挂载点 /|-- tmp 存放临时文件 /|-- usr 存放用户应用程序 /|-- var 存放邮件/系统日志等变化文件

1.链接 那么链接又是什么呢?我们都知道在Windows系统中有一种快捷方式,那么这个快捷方式就是一种链接,类似于我们在下面说的软链接。当然了linux的链接也是比较复杂

我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。

在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

2.链接分类 在linux中链接主要分为硬链接以及软链接,接下来分别说一下这两个链接

硬链接: (1)刚才提到的inode号,对于硬链接来说,一个inode号可以对应多个文件名,即同一个文件使用了多个别名。

(2)对于一个文件来说,每添加一个硬链接,该文件的inode链接数就会加1,而且只有当该文件的inode连接数为0时,才算彻底将它删除。

(3)由于硬链接实际上是指向原文件的inode的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。 (4)我们可以理解为只想一个原始文件的inode指针,系统不会为它分配独立的inode和文件。

Note:

1.硬链接,以文件副本的形式存在。但不占用实际空间。 2.不允许给目录创建硬链接 3.硬链接只有在同一个文件系统中才能创建 4.删除一个硬链接文件并不影响其他有相同 inode 号的文件。 5.文件有相同的 inode 及 data block;

不允许给目录创建链接 [root@hdfa028 ~]# ln ldj ldjlink ln: ‘ldj’: hard link not allowed for directory

只能给存在的文件创建 [root@hdfa028 ldj]# ll total 0 [root@hdfa028 ldj]# ln new newlink ln: failed to access ‘new’: No such file or directory [root@hdfa028 ldj]# touch new [root@hdfa028 ldj]# ln new newlink 拥有相同的inode号以及data block [root@hdfa028 ldj]# ls -li total 0 69828729 -rw-r–r-- 2 root root 0 Oct 31 20:06 new 69828729 -rw-r–r-- 2 root root 0 Oct 31 20:06 newlink 不能够交叉文件系统创建 [root@hdfa028 input]# ln event0 /root/ ln: failed to create hard link ‘/root/event0’ => ‘event0’: Invalid cross-device link

使用 df -i --print-type 可以查看相同的inode 硬链接不能对目录创建是受限于文件系统的设计(见 清单 4.对目录创建硬链接将失败)。现 Linux 文件系统中的目录均隐藏了两个个特殊的目录:当前目录(.)与父目录(…)。查看这两个特殊目录的 inode 号可知其实这两目录就是两个硬链接(注意目录 /mnt/lost+found/ 的 inode 号)。若系统允许对目录创建硬链接,则会产生目录环。 ls -aliF /mnt/lost+found 软连接 其实软链接就类似于我们Window上的“快捷方式"。 软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。因此软链接的创建与使用没有类似硬链接的诸多限制

1.软链接有自己的文件属性及权限等; 2.可对不存在的文件或目录创建软链接; 3.软链接可交叉文件系统; 4.软链接可对文件或目录创建; 5.创建软链接时,链接计数不会增加; 6.删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)

3.ln 命令 ln(link 其实link命令的缩写) 具体使用: ln [选项] 目标文件 选项有如下

-s 使用软连接 -b 删除,覆盖之前建立的链接 -d 允许超级用户制作目录的硬链接 -f 强制执行 -i 交互模式,文件存在则提示用户是否覆盖 -n 把符号链接视为一般目录 -v 显示详细的处理过程

最新回复(0)