码迷,mamicode.com
首页 > 系统相关 > 详细

LInux软硬链接概念

时间:2018-10-10 10:42:41      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:磁盘空间   tor   之一   允许   使用   lin   无限   ls -l   file   

一、LInux软硬链接概念

Linux链接分为符号链接(Symbolic Link)也叫软链接和硬链接(Hard Link)两种,默认情况下,ln命令会产生硬链接。

二、软连接

    1.创建软连接命令:ln -s sourcefile newfile

    2.简介:

软链接又叫做符号链接,软链接文件有类似于Wondows的快捷方式。它实际上是一个特殊的文件。

    3.连接件特点:

3.1? 可以链接任何文件或者目录,还可以链接不同文件系统的文件或者目

3.2? 要链接文件时,新文件是必须存在的,当源文件不存在时,建立的链接是一个空链接。空链接文件也可以操作,而且对空链接操作,例如,emptyfile是空链接,对emptyfile进行vim emptyflie,并写入一些字符时保存时,系统就会自动生成一个emptyfile对应的源文件。空链接就会变成软链接。

3.3?? 软链接相当于windows系统的快捷方式,windows系统下改变快捷方式,例如对快捷方式重命名等不会改变源文件的内容。而在linux系统下,改变newfile时,sourcefile也会同步改变。当然,改变sourcefile也会引发newfile的同步改变。

3.4??删除newfile时,不会对sourcefile产生影响,但是删除sourcefile时,newfile就会变成一个空链接。当然,再对newfile写入内容,系统又会生成newfile对应的源文件。

[root@centos7 data]#ln -s f1 f2
[root@centos7 data]#echo "I am f1 file">>f1
[root@centos7 data]#
[root@centos7 data]#cat f1
I am f1 file
[root@centos7 data]#cat f2
I am f1 file

[root@centos7 data]#rm -rf f2
[root@centos7 data]#cat f1
I am f1 file
[root@centos7 data]#cat f2
cat: f2: No such file or directory
[root@centos7 data]#

[root@centos7 data]#ln -s f1 f2
[root@centos7 data]#cat f2
I am f1 file

[root@centos7 data]#rm -rf f1
[root@centos7 data]#cat f2
cat: f2: No such file or directory
[root@centos7 data]#

当删除原始文件f1时,软连接文件无效。

    4.不足:

因为链接文件包含原文件的路径信息,所以当原文件从一个目录下移动到另一个目录下,再访问链接文件,系统就找不到了。

三、硬链接

1.创建硬链接的命令:ln sourcefile newfile

2.简介

    由于Linux下的文件是通过索引节点来识别文件的,硬链接可以认为是一个指针,是一个指向文件索引节点的指针。系统并部位它重新分配inode,每添加一个硬链接,文件的链接数就加一。说到这里,就不得不提一下inodeinode是Unix内部用于描述文件特性的数据结构。我们通常称inode为文件索引节点Index Node(信息节点)。inode含有文件系统关于文件的大部分重要信息。在Unix创建文件时,同时会创建大量的inode节点。通常,文件系统磁盘空间中约百分之一的空间分配给了inode表。inode指的是数据结构,而索引编号实际上是inode的标识编号。inode表包含一份清单。列出了对应文件系统的所有文件inode编号,当用户搜索或者访问一个文件时,Unix系统通过inode表查找到相对应的inode编号。在找到inode编号后,相应的命令才能访问该inode,并对它进行访问等操作。

3.特点

3.1? sourcefile和newfile相互影响,同步执行。

3.2? 建立硬链接后,sourcefile和newfile的连接数都为2,当删除sourcefile文件后newfile文件不受影响,只是连接数减一,从链接文件变为普通文件。因为删除一个文件,实际上是删除inode信息。当链接数为0时,才会彻底删除该文件。也就是说,文件真正删除的条件是与之相关的所有硬链接文件都被删除。

3.3? 硬链接不占用磁盘空间。

3.4? 硬链接只作用于文件。

[root@centos7 data]#touch f1
[root@centos7 data]#ln f1 f2
[root@centos7 data]#ls -li
total 0
67 -rw-r--r--. 2 root root 0 Sep 29 15:31 f1
67 -rw-r--r--. 2 root root 0 Sep 29 15:31 f2
[root@centos7 data]#ln -s f1 f3
[root@centos7 data]#ls -li
total 0
67 -rw-r--r--. 2 root root 0 Sep 29 15:31 f1
67 -rw-r--r--. 2 root root 0 Sep 29 15:31 f2
68 lrwxrwxrwx. 1 root root 2 Sep 29 15:31 f3 -> f1
[root@centos7 data]#echo "I am f1 file">>f1
[root@centos7 data]#cat f1
I am f1 file
[root@centos7 data]#cat f2
I am f1 file
[root@centos7 data]#cat f3
I am f1 file
[root@centos7 data]#rm -rf f3
[root@centos7 data]#cat f1
I am f1 file
[root@centos7 data]#cat f2
I am f1 file
[root@centos7 data]#cat f3
cat: f3: No such file or directory
[root@centos7 data]#

4.不足

4.1? 不允许给目录创建硬链接。

4.2? 只有在同一文件系统中的文件才能创建硬链接。

    为什么不允许给目录创建硬链接?

原因:系统在遍历文件夹的时候,假设可以创建目录的硬链接,则因为系统不能识别出该硬链接是链接还是文件本身。这样,系统就会无限的递归下去。而软链接可以被系统识别,就不会出现这样的问题。

    为什么只有在同一文件系统下的文件才能创建硬链接?

原因:不同的文件系统可能具有相同的inode编号,假设可以在A系统创建B系统文件的硬链接,这是,假设B系统的文件B1的硬链接文件为A系统的A1。那么,理论上,他们具有相同的inode编号,如111,但是,假设此时A系统中本来就可能存在inode号为111的文件。假设此时想访问inode号为111的文件,那么久不知道到底是访问A系统的文件还是访问B系统的文件。

四、 总结:

软硬链接的相同点与区别:

相同点:

1.链接文件newfile在创建前都必须为空。

2.newfile和sourcefile的改变读会影响对方。

不同点:

1.软链接可以跨文件系统,硬链接不可以。

2.软链接可以对目录链接。

3.软链接可以对一个不存在的文件进行链接。

4. 硬链接通过inode访问文件,软链接不直接使用inode作为文件指针,而是使用文件路径名作为指针。

LInux软硬链接概念

标签:磁盘空间   tor   之一   允许   使用   lin   无限   ls -l   file   

原文地址:http://blog.51cto.com/yy1109lll/2296515

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!