Linux连接档
Linux下的连接档种类
一个是类似于win的快捷方式,我们成为”软连接“,一种是通过文件系统的inode连接来产生的,类似于win电脑的复制,但是不产生新的文件,我们成为”硬连接“,也可以叫“实体连接”。
什么是inode?
inode也叫索引节点,是用来存放文件信息的,每个文件都会占用一个inode,并且这个inode号是唯一的,文件的内容都是inode来指定的,而不是文件名。
当系统要访问文件时,inode就会被复制到内存,从而实现文件的快速访问,使用ls -i
命令则可以看到inode号,-i
参数是打印文件的inode号:
-i, --inode print the index number of each file
软硬链接的区别
硬链接(hard link):
A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。
如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。
硬链接的好处:
- 安全,删除其中一个,只要链接数不为0,就不影响对应的数据块的存在;
- 不占用实际空间,且修改一个就会自动修改另外一个;
- 可以利用安全性做文件的备份(防止误删)。
缺点:
- 只能在同一个文件系统下创建硬链接;因为不同的文件系统的管理方式不同,有些文件系统不是索引文件系统;或者即使是索引文件系统,它们同一个inode也可能对应不同的数据块。
- 目录之间不能创建硬链接。(太复杂了,现在还不支持)
软链接(soft link):
A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。
但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
优点:用途广泛
缺点:安全性相对较差
如何创建硬链接?
可以用ln
命令来创建硬连接。
Usage: ln [OPTION]... [-T] TARGET LINK_NAME
or: ln [OPTION]... TARGET
or: ln [OPTION]... TARGET... DIRECTORY
or: ln [OPTION]... -t DIRECTORY TARGET...
In the 1st form, create a link to TARGET with the name LINK_NAME.
In the 2nd form, create a link to TARGET in the current directory.
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
一般来说,命令格式为:
ln 源文件 目标文件
常用参数
-f 强制创建,不管目标文件(链接)是否已存在
如何创建软链接?
使用ln -s
,带上-s参数即可。但是此时要注意源文件应该用绝对路径,否则创建后如果需要移动软链接文件或者源文件,链接就会失效(因为相对路径创建的软链接,与源文件的链接是继续相对路径的,必须相对位置时,链接才有效)。
ln -s 绝对路径下的源文件 绝对路径下的软链接文件
创建后,使用ls -li 查看,发现链接文件和源文件的inode不同,且链接文件的文件类型是"l"。
Ubuntu系统中各个文件的颜色意义:
颜色 | 类型 | 对应的符号 |
---|---|---|
深 蓝 色 \color{#0000CF}{深蓝色} 深蓝色 | 文件夹 | d(document) |
红 色 \color{#FF0000}{红色} 红色 | 压缩文件 | - |
绿 色 \color{#005F00}{绿色} 绿色 | 可执行文件 | - |
白 色 \color{#000000}{白色} 白色 | 文本文件 | - |
红 色 闪 烁 \color{#FF0000}{红色闪烁} 红色闪烁 | 错误的符号链接 | l |
蓝 绿 色 \color{#00AF9F}{蓝绿色} 蓝绿色 | 符号链接 | l |
黄 色 \color{#AA9A00}{黄色} 黄色 | 设备文件 | c |
灰 色 \color{#AAAAAA}{灰色} 灰色 | 其他文件 | - |
推荐阅读
-
Linux 学习一 搭建环境系列之三 linux搭建django 以及搭建django时遇到的各种问题
-
Linux连接档
-
PHP 5.3.0以上推荐使用mysqlnd驱动 博客分类: Linux学习笔记PHP开发
-
高并发下iptables丢包导致网络变慢解决方法 博客分类: Linux学习笔记
-
深入分析Redis Server went away产生的原因 博客分类: Linux学习笔记PHP开发
-
深入分析Redis Server went away产生的原因 博客分类: Linux学习笔记PHP开发
-
Nginx php upstream sent unexpected FastCGI record: 3 while reading response head 博客分类: Linux学习笔记web服务器技术MysqlPHP开发
-
PHP中STDIN, STDOUT, STDERR的重定向 博客分类: PHP开发Linux学习笔记
-
Nginx php upstream sent unexpected FastCGI record: 3 while reading response head 博客分类: Linux学习笔记web服务器技术MysqlPHP开发
-
linux 构建软连接