1 硬链接概念

硬链接是指通过索引节点(Inode)来进行链接,在Linux(ext2,ext3)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index)简称Inode,即在系统中文件的编号。

在Linux文件系统中,多个文件名指向同一个索引节点(Inode)是正常且允许的。这种情况的文件就称为硬链接,硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件存储如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接。)为什么一个文件建立了硬链接会防止误删呢?

因为文件系统(ext2)的原理是,只要文件的索引节点还有一个及一个以上的链接。只删除其中一个硬链接,并不影响索引节点本身和其它的链接,只有当文件的最后一个链接被删除后,此时如果有新数据要存储到硬盘上时或都系统通过以fsck做磁盘检查的时候,被删除文件的数据块及目录的链接都会被释放,空间被新数据占用并覆盖。此时,数据就再也无法找回了,也就是说,在linux系统中,删除文件(目录也是文件)的条件是与之相关的所有硬链接均被删除;

提示:硬链接相当于文件的另外一个入口

2 查看硬链接数

此图下面标红的显示为硬链接数,表示已有几个硬链接数;

注:目录不可创建硬链接

创建一个硬链接,查看变化。

创建的硬链接文件,他们的Inode节点是相同的。

3 软链接

软件链接相当于windos的快捷方式

Linux里的软链接文件是一个特殊的文件。在软链接中,软链接文件实际上就是一个文本文件,这个文件中包含有软链接指向另一源文件文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

创建的软链接,他们的inode节点不相同。

4 小结:

4.1 硬链接小结:

1)通过ls –li参数查看硬链接数

2)同一个文件可以同时有多个硬链接,但只对文件生效,硬链接不能用于目录。

3)同一个文件的多个硬链接文件inode节点相同

4)删除一个文件的一个硬链接文件,不会影响其他硬链接文件;只有删除所有硬链接文件和源文件,数据才会被删除。

5)当所有的硬链接文件和源文件都被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,数据也会被回收。

6)硬链接是一个文件的多个入口。

7)和复制不一样的是,硬链接的文件指向的都是同一个源文件,所以在任何硬链接文件做更改,直接会影响到每一个硬链接文件中。相当于时时同步

8)目录不支持创建硬链接

4.2 软链接小结:

1)软链接相当于windos的快捷方式

2)软链接和源文件的inode值不同

3)可以在不同分区对文件或目录进行创建软链接

4)通过readlink命令查看软链接文件对应的实质源文件

5)删除软链接源文件对软链接会直接影响

6)软链接和源文件是不同类型的文件,也是不同的文件。

7)虽然目录不能创建硬链接,但通过ls查看属性时还可以看到显示硬链接数的那一行并非为1,而是大于1的数;原因在于,每创建一个目录时,其自动给自己创建一硬链接(可查看隐藏文件),并且在目录下每创建一个子目录,都会使硬链接数加1(创建文件不增加)。

这个只在目录下创建子目录才有效,如果在子目录下创建子目录就无效(原理是子目录下通过ls –al查看到有“..”对应上一目录的硬链接)

5 Linux系统文件删除及还原原理:

1. 一个文件有两部分组成,分别为i_link和i_count。

2. i_link为硬链接数;i_count为调用文件进程数

3. 当i_link为0时(即删除所有硬链接和源文件),且没被其他进程调用,此文件就被删除。

4. 当i_link为0时,但被其他进程调用时,说明i_count不为0,则文件可还原。

所以文件是否真的被删除,看i_link和i_count两个计数器决定。

5.1 Web服务器磁盘满故障案例分析:

参考资料:http://oldboy.blog.51cto.com/2561410/612351

5.2 案例:模拟Web服务器磁盘满故障环境

1)yum安装httpd

[root@baiguin ~]# yum -y install httpd

2)更改httpd.conf配置文件访问日志路径

[root@baiguin ~]# sed -i "s@#CustomLog /app/log/access_log combined@CustomLog /app/log/access_log combined@" /etc/httpd/conf/httpd.conf

3)创建模拟磁盘

[root@baiguin ~]# dd if=/dev/zero of=/dev/sdc bs=8K count=10

记录了10+0 的读入

记录了10+0 的写出

81920字节(82 kB)已复制,0.000898885 秒,91.1 MB/秒

[root@baiguin ~]# ll /dev/sdc

-rw-r--r-- 1 root root 81920 9月 24 16:02 /dev/sdc

[root@baiguin ~]# mkfs.ext3 /dev/sdc

4)挂载查看

[root@baiguin ~]# mount /dev/sdc /app/log/

mount: /dev/sdc is not a block device (maybe try `-o loop'?)

[root@baiguin ~]# mount -o loop /dev/sdc /app/log/

[root@baiguin ~]# df -h

/dev/sda1 485M 76M 384M 17% /boot

/dev/sdc 73K 14K 55K 21% /app/log

5)启动http并查看

[root@baiguin ~]# /etc/init.d/httpd start

[root@baiguin ~]# ll /app/log/

-rw-r--r-- 1 root root 4524 9月 24 16:11 access_log

drwx------ 2 root root 12288 9月 24 16:04 lost+found

6)多次打开网页,让磁盘占满,并删除日志文件,查看磁盘是否还占满。

删除后发现磁盘未减小

7)通过lsof | grep del 查看文件被占用情况

8)重启httpd服务释放正在写入的日志并查看

生产场景:最佳解决方案

1)删除文件,重启服务。

2)清空文件里的内容,无需重启服务。

3)不要删除当天的被进程占用的文件,删以前的。

6 文件时间类型

6.1 GNU/Linux的文件有3种类型的时间戳:

可通过stat 命令查看文件的三种时间

6.2 通过ls命令各参数分别查看文件时间戳

1) 通过默认的ls (ls -lt)显示的是最后修改时间

2) 通过ls –lc 显示的是状态改变时间

3) 通过ls –lu 显示的是最后访问时间

6.3 改变时间戳的几种情况

1)Touch一个已经存在的文件时会使该文件的三个时间戳都改变

2)查看文件时会改变文件的访问时间(以及其他的一些对文件属性的修改,都会便时间戳有相应的变动)

6.4 通过ls两种方法显示文件时间长格式

1)通过ls 的 –time-style=long-iso命令

[root@baiguin ~]# ls -l --time-style=long-iso wang.txt

-rw-r--r-- 1 root root 46 2014-09-25 10:43 wang.txt

2)通过ls –time-style=full-iso命令

[root@baiguin ~]# ls -l --time-style=full-iso wang.txt

-rw-r--r-- 1 root root 46 2014-09-25 10:43:13.081973883 +0800 wang.txt

http://www.cnblogs.com/wangbaigui/p/4409955.html

linux系统文件属性-硬连接、软连接的更多相关文章

  1. Linux文件系统的硬连接和软连接

    title: Linux文件系统的硬连接和软连接 date: 2018-02-06T20:26:25+08:00 tags: ["文件系统"] categories: [" ...

  2. linux中的硬连接和软连接

    linux中的硬连接和软连接 linux中的硬连接和软连接 背景 连接 硬连接 软连接 example reference 背景 linux中的文件主要分3块, - 真正的数据 - 索引节点号(ino ...

  3. 实例讲解Linux系统中硬链接与软链接的创建

    导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说 ...

  4. linux系统文件属性及企业精典故障案例

    linux系统文件属性: [root@nginx_back ~]# stat keepalived-1.2.7.tar.gz 查看文件属性 File: "keepalived-1.2.7.t ...

  5. 虚拟机virtualBox安装linux系统 xshell远程连接linux

    虚拟机virtualBox安装linux系统 xshell远程连接linux 虚拟机概念: 通过软件, 使用虚拟化技术虚拟出电脑的硬件环境, 充当真实的电脑使用. 常见的虚拟软件: virtualBo ...

  6. 在Linux系统下远程连接oracle的防火墙设置

    在Linux系统要远程连接Oracle的防火墙设置方法: 打开5801至5810 端口用于vnc iptables -I INPUT -p tcp --dport 5801:5810 -j ACCEP ...

  7. 初窥Linux 之 区分硬连接和软连接

    一.Linux下的两种连接文件及创建方式 在Linux下面的连接文件有两种——软连接和硬连接,虽然都是连接文件,但两者却有很大的区别.一种是类似于Windows的快捷方式功能的文件(或目录),这种连接 ...

  8. Linux系统学习之Ln(软连接和硬链接)

    可简单理解为,软连接:创建的软连接文件是源文件的快捷方式,删除创建的软连接文件,源文件不受影响,连接消失. 硬链接:两个连体的文件,修改其中一个文件,另外一个文件也会随之更改:删除其中一个文件,另外一 ...

  9. linux文件的硬连接和软连接

    建立软连接:ln -s 原路径 目标路径 原理示意图: 特点: 1.     相当于win中的快捷方式 2.     删除链接文件,源文件不受影响 3.     删除源文件,链接文件失效 4.     ...

随机推荐

  1. JDBC初步(一)

    import java.sql.*; public class TestJDBC { // orcl为oracle数据库中的数据库名,localhost表示连接本机的oracle数据库 // 1521 ...

  2. js div 内容显示分页

    由于工作需要 div固定大小 而内容不定 所以 如果内容过多自然就显示不出来了 所以 需要分页一类的功能下面是代码 <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  3. iOS开发之第三方登录微博-- 史上最全最新第三方登录微博方式实现

    相关资源地址: 本项目demo地址 :  https://github.com/zhonggaorong/weiboSDKDemo 最新SDK下载:  最新微博SDK 官网注册地址:点击打开链接 最新 ...

  4. 基于Qt下移动平台第三方接入-ShareSDK(新浪微博,微信朋友圈等分享登录)

    一. ShareSDK简介 ShareSDK是为iOS.Android.WP8的APP提供社会化功能的一个组件,开发者只需10分钟即 可集成到自己的APP中,它不仅支持如QQ.微信.新浪微博.腾讯微博 ...

  5. 函数重载不仅仅是看其参数,还要看是否有const修饰

    比如QString有两个函数,可以堂而皇之的存在,原因就在于有了const修饰以后,编译器不把两个函数当作同一个函数名了: QChar * data() const QChar * data() co ...

  6. Niagara技术文档汇总

    Niagara技术文档汇总http://wenku.baidu.com/view/ccdd4e2c3169a4517723a38f.html Niagara讲解要点http://wenku.baidu ...

  7. cocos2dx进阶学习之屏幕适配

    背景 在学习cocos2dx时,我们在main函数中发现一句代码, #include "main.h" #include "AppDelegate.h" #in ...

  8. uvalive 2322 Wooden Sticks(贪心)

    题目连接:2322 Wooden Sticks 题目大意:给出要求切的n个小木棍 , 每个小木棍有长度和重量,因为当要切的长度和重量分别大于前面一个的长度和重量的时候可以不用调整大木棍直接切割, 否则 ...

  9. MD5加密解密

    方法一 首先,先简单介绍一下MD5 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer scien ...

  10. 笔试题&amp;面试题:找出一个数组中第m小的值并输出

    题目:找出一个数组中第m小的值并输出. 代码: #include <stdio.h> int findm_min(int a[], int n, int m) //n代表数组长度,m代表找 ...