软链接与硬链接

软链接

相当于windows下的一个快捷方式,可以是文件也可以是文件夹

ln -s /mnt/mtd_app/ts ts
//就会在该目录下生成一个软链接

硬链接

linux下文件的存储是通过索引节点号来存储的,硬链接相当于为文件增加了一个索引节点号
相当于另一个访问文件的路径(感觉有点像指针)
因此只删除其中一个链接并不会删除文件,只有所有的索引节点号都删除后文件才会被真正的删除

注意:硬链接不允许给文件目录建立;只有超级用户才有建立硬链接权限

特点以及不同

  • 两种链接的方式都具有同步性,即源文件更改那么相应的链接也会更改(跟windows相同啊)
  • 两种方式都占用很少的磁盘空间,具体的方式自己还需要研究ibm的文档
  • 软链接情况下,源文件挪位置了,软链接就无法使用了;硬链接文件挪位置了也可以访问到文件(相当于重新生成了一份文件)

原理内容

参考ibm的学习资料

Linux的文件与目录

  • Unix是由进程和文件构成的
    在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件
  • Linux的目录结构
    Markdown
  • 设备当做文件
    Linux把设备当做文件进行处理

处理方法
输入设备信息所在目录: /proc/bus/input/devices
Markdown
打开设备的方法(暂时没看)
Markdown

Linux文件

  • Linux文件系统
    Markdown
    实现这些文件系统的基础就是Linux VFS(虚拟文件系统)

  • 由两个部分组成,用户数据元数据
    用户数据 文件真实的数据内容
    元数据 文件的属性:大小,所有者,使用权限,索引节点号等等信息

  • 抽象了文件系统的四个基本概念
    1.文件:实际的数据块
    2.目录项:包含文件名和指向的inode
    3.索引节点:包含文件信息以及数据块指针
    4.挂载点

  • 结构
    Markdown
    Markdown

利用文件名找到索引节点号.------->存放在目录项中
利用索引节点号可以查询到文件的信息 和 文件数据块的指针.------->存放在索引节点表中
(具体什么结构,参照保存的资料)

硬链接与软链接实际结构

Markdown

硬链接是在目录项中添加一个指向inode的文件名
软链接是普通的文件,只是内容存放的是文件名或者文件夹名

所以,才有了许多的不同
1.硬链接即使原本的文件名改变了,硬链接依旧可以访问到具体文件;软链接下,如果文件名改变,软链接就会失效
2.硬链接由于是存放的是文件的文件名,所以不能对目录生成硬链接;软链接存的可以是文件也可以是目录,所以都可以生成链接

相关的命令

文件命令

stat filename
Markdown

硬链接

ln oldfile newfile

软链接

ln -s oldfile newfile

其他命令

1.查看当前系统挂载的文件系统的类型
df -i --print-type
Markdown
2.tree命令
tree . -F -L 2

-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
相当于包含很多其他选项,也包含-l符号链接指向选项
-L 2 显示的层级
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
Markdown

原文地址:https://www.cnblogs.com/sslblog/p/6862042.html