首页
登录 | 注册

Unix文件系统研究、三链接

Unix文件系统研究、三链接
 
关键词:ScoUnix 文件系统 硬链接 符号链接
 
《文件系统研究之二》中提到了文件名是文件i节点的链接,也就是说一个i节点可以有多个链接,即多个文件名,这种链接就是所谓的硬链接。
除了硬链接之外,unix下还有另一种链接,称之为符号链接。
 
硬链接用ln命令创建,符号链接用ln -s创建。
 
开始之前,先实践一把,在scounix试验如下命令:
538# echo "test" >abc
539# l -i abc
65542 -rw-r--r--   1 root     sys            5 Jul  5 04:54 abc
540# ln abc abcnew
541# ln -s abcnew abcs
542# l -i abc*
65542 -rw-r--r--   2 root     sys            5 Jul  5 04:54 abc
65542 -rw-r--r--   2 root     sys            5 Jul  5 04:54 abcnew
65542 -rw-r--r--   2 root     sys            5 Jul  5 04:54 abcs@

可以看到:
1、文件abcnew跟abc的大小,i节点完全一致;
2、文件abcs跟abcnew的大小,i节点也一致(注意:abcs的真实i节点并不是65542,后面可以看到,这是l程序的原因)
3、注意第三列的数字2,代表该i节点有2个链接,不是3个。
 
试验二:
558# echo "test2">>abcnew
559# cat abc
test
test2
560# l -ia abc*
65542 -rw-r--r--   2 root     sys           11 Jul  5 05:06 abc
65542 -rw-r--r--   2 root     sys           11 Jul  5 05:06 abcnew
65542 -rw-r--r--   2 root     sys           11 Jul  5 05:06 abcs@
561# rm abc
562# l -ia abc*
65542 -rw-r--r--   1 root     sys           11 Jul  5 05:06 abcnew
65542 -rw-r--r--   1 root     sys           11 Jul  5 05:06 abcs@

可以看到:
1、修改abcnew,abc同样大小变化,内容也同样变化;
2、删除abc,不会删除abcnew,但是链接数变成1。
 
试验三:
563# rm abcnew
564# l -ia abc*
65543 lrwxrwxrwx   1 root     sys            6 Jul  5 05:06 abcs@
565# cat abcs
cat: cannot open abcs: No such file or directory (error 2)
567# echo "test3" >abcnew
568# cat abcs
test3
569# l -ia abc*
65542 -rw-r--r--   1 root     sys            6 Jul  5 05:39 abcnew
65542 -rw-r--r--   1 root     sys            6 Jul  5 05:39 abcs@

可以看到:
1、删除abcnew,abcs还是不会被删除;
2、这里可以看出abcs的真实的i节点及大小。
3、重建abcnew之后,abcs指向了新的abcnew(i节点内容都变了)。
 
 
通过以上试验看出:
硬链接典型的特征就是,所有文件的i节点号是一样的;硬链接不是文件拷贝,只是增加了一个i节点链接(或者说增加了一个入口指针),所有的硬链接都是权力(权限,大小)均等的,修改任意一个,其他也被修改。
 
再回顾下《文件系统研究之一》中提到的i节点结构。i节点结构中有一个很重要的字段就是链接数。
所以删除一个文件,不一定就会真的释放其i节点,删除文件其实是在目录文件中,根据文件名找到对应的i节点,先把i节点链接数减一,再删除目录结构中文件记录,当且仅当i节点接数为0时,才真的释放对应的i节点。
 
总结一下硬链接与符号链接的区别:
1、硬链接是通过i节点来关联文件;
不同的文件系统都有自己独立的i节点,所以硬链接不能跨越文件系统,不能指向目录;
2、符号链接是通过文件名来关联文件;
即便是原文件删除,符号链接依然可以存在,但是指向是空。只是可以独立于原文件而存在,新建文件后可以自动指向新的文件。
符号链接可以跨越文件系统,可以指向目录。
 
3、硬链接用ln创建,符号链接用ln -s创建;
 
4、符号链接类似windows里的快捷方式,硬链接有点类似共享;
 
5、lstat()可以获取链接文件本身的信息,stat()函数获取指向文件的信息。
 
 
下次讨论掩码算法原理

相关文章

  • 1.建立举例 ##建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录. mklink /d d:\develop \\138.20.1.141\e$\develop ##建立d:develop链接目录,指向远程的目标服务 ...
  • 表格 B-1. 特殊的shell变量 变量 含义 $0 脚本名字 $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 $# 位置参数的个数 "$*" 所有的位置参数(作为单个字符 ...
  • 1前言1.1 1 什么是OpenFire1.2 2 什么是PostgreSQL2 一.安装JAVA环境2.1 1 开启linux支持2.2 2 增加数据和堆栈限额(官方建议 非必须)2.3 3 建立/etc/mk.conf2.4 4 进入j ...
  • input子系统(三)--input核心
    一.input子系统简介 1.1.input子系统原理         在Linux中,输 入子系统是由输入子系统设备驱动层.输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成.其中设备驱动层提 ...
  • 一些系统可能需求把数据导出到Access或者Excel文件格式,以方便的传递数据.打印等.Excel 文件或者 Access这两种需要导出的文件可能并不是事先就存在的,这就需要我们自己编程生成他们,下面整理一下生成这两个文件的一些方法,只罗 ...
  • Java Secure Socket Extension (三) SSL Protocol Overview
    把JavaTM Secure Socket Extension (JSSE) Reference Guide把翻译了一下,留着自己看,也分享给大家,略有删减,不保证翻译的正确性. SSL提供了一个安全增强的标准TCP/IP套接字协议用于网络 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.014 s.
京ICP备10005923号