初识文件系统和软硬链接

什么是文件系统?

        磁盘分区以后必须设置磁盘的文件系统才可以正式使用,文件系统定义了文件存储的类型,也就是这个文件要按照怎样的方式存入磁盘分区。

        linux中文件系统的类型:ext3ext4xfs

        windows中的文件系统类型:fat32ntfsextfat

        说到存储方式,就要聊一聊inode索引和block块了,为了提高资源的利用率,系统把分好的磁盘分区,又划分了很多个有序的block块,存储容量2K 4K 8K 16K不等,根据文件的大小按需分配。如果文件很大,就会占用多个block块,这些block块会记录在对应的inode号中。目录怎么找到这些数据块呢?目录其实是一个特殊的文件,里面存放着文件的权限、所属人、所属组、Inode、文件名等信息。目录通过文件名和inode映射,找到inode指向的所有数据块

软硬链接的叙述

        Inode可以和多个文件名进行映射,这样文件的有效路径就有多条,这多条有效路径就叫做文件的硬链接。你创建文件时起的那个文件名,其实也是硬链接。删除个别硬链接不会影响其他硬链接对源文件内容的访问,但如果所有硬链接都被删除,inode就会被释放,block也将会被新来的数据覆盖掉(一个文件至少要有一条硬链接)

软连接:软链接存储的是一条可以访问到源文件的有效路径,通过该路径访问到源文件所在目录。再由inode找到对应的文件内容。因为软连接存储的是一条硬链接的路径,所以它可以跨分区,硬链接是通过inode进行访问的,这就限制了它必须和文件内容在一个磁盘分区(每个分区都有自己独立的inode号)

        软链接优点:可以跨分区,就像快捷方式一样方便

        缺点: 链接的路径一旦消失,软链接就会失效

        硬链接优点:可以建多条有效路径,来提高数据的安全性(防止误删)

           缺点:不可以跨分区,访问有局限性

 

下面让我们以真实的环境去看看软硬链接长什么样子

硬盘状态

[root@localhost app]#df / /app

Filesystem     1K-blocks    Used Available Use% Mounted on

/dev/sda2       48803552 4391280  44412272  
9% /

/dev/sda3       48803552   32948 
48770604   1% /app

 

 

跨分区实现软链接

[root@localhost app]#pwd

/root

[root@localhost app]#echo welcome
to mageEdu > /app/file01       
将结果重定向至file01文件

[root@localhost app]#ln -s
/app/file01 file01                                  ./file01
作为/app/file01 的软链接

[root@localhost app]#ll file01                                                        查看链接状态

lrwxrwxrwx. 1 root root 11 Jul 20 14:45
file01 -> /app/file01

[root@localhost app]#cat
/root/file01                                              
通过软链接访问文件内容

welcome to mageEdu

 

 

外链接的搭建

[root@localhost app]#cd /app

[root@localhost app]#ls

file01

[root@localhost app]#mkdir whb

[root@localhost app]#tree

.

├── file01

└── whb

[root@localhost app]#cd whb

[root@localhost app]#ln ../file01
f1

[root@localhost app]#ls

f1

[root@localhost app]#ls -li f1                                                        通过查看硬链接和源文件状态

67 -rw-r–r–. 2 root root 19 Jul 20 14:44
f1                                          
会发现它们inode号是一样的

[root@localhost app]#cd ..

[root@localhost app]#ls -li
file01

67 -rw-r–r–. 2 root root 19 Jul 20 14:44
file01

[root@localhost app]#cat f1                                                          通过硬链接访问文件内容

welcome to mageEdu

 

 

测试

1、  删除源文件不会影响其他硬链接访问文件内容,而软链接失效

初识文件系统和软硬链接

初识文件系统和软硬链接

 

原创文章,作者:whb,如若转载,请注明出处:http://www.178linux.com/81854

(0)
上一篇 2017-07-19 21:00
下一篇 2017-07-20 16:38

相关推荐

  • 第七周作业

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;   (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@localhost ~]# fdis…

    Linux干货 2017-07-04
  • 系统基础之shell脚本编程详解2

    shell脚本编程2:   在上节我们介绍了shell脚本编程,但只是介绍了基础的内容,下面将为大家介绍shell的脚本的高级用法,判断与循环.判断分为两种:if语句和case语句;循环分为三种:for语句,while语句,until语句,select语句 判断语句:  在脚本的编写中,我们要使用大量的数据和命令,但对于使用的数据,我们要…

    Linux干货 2016-08-19
  • 文件管理命令及文件名通配

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类的命令 mkdir 用法: mkdir [选项]… 目录… 选项:  -p 递归创建多个目录 实例: [root@centos7 ~]# mkdir -p /tmp/jerry/2016/…

    Linux干货 2016-11-06
  • linux中的管道符

    管道符 less只能看文件 但是这样做会产生一个垃圾文件ls.txt,所以下面我们就会需要用到管道符 |只将传递正确结果传递给 而使用这两种方法可以传递正确和错误的结果[root@localhost ~]# ls /etc/passwd /cpp/passwd 2>&1|less   ,  (2>&1…

    2017-07-22
  • nginx 日志切割(脚本实现)

        这里主要介绍nginx日志切割.(访问日志与错误日志)     准备好一台机器,配置随意,安装nginx应用。     1. nginx安装步骤   # tar xf nginx-1…

    Linux干货 2016-07-10
  • 马哥教育网络20期+第4周作业博客

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 答:cp -a /etc/ske1 /home/tuser1 && chown -R go-rwx /home/tuser1 2、编辑/etc/group文件,添加组hadoop。 答:echo "…

    Linux干货 2016-09-05