Linux下的硬链接和符号链接
2010-10-08 20:01
232 查看
硬链接和软链接的几点区别:
1.硬链接文件和原文件指向同样的数据块,有相同的inode号和文件属性,当删除原文件时,硬链接文件仍然存在有效。但硬链接文件不同于文件的复制。应该说硬链接文件的产生只是原文件所在目录文件的内容发生改变,原文件的数据并没有得到复制,而复制文件,磁盘上有两份数据。简单说,硬链接就是一个类似于别名的概念。当原来的名字没有了,别名照样可以使用。
2.符号链接也称为软链接,它是包含在文件中的路径名。当系统遇到符号链接时,它沿着符号链接提供的路径名前行,然后继续沿着符号链接后面的任何其余路径前行。如果路径名以一个 / 开始,则系统返回到 /(“根”)目录,并从该目录开始沿着路径前行。如果路径名未以 / 开始,则系统返回到前一级目录,并从那个目录开始沿着符号链接中的路径名前行。符号链接和windows系统的快捷方式含义一样,是新文件,和原文件的inode不同,该文件的内容是指向原文件的路径信息。
3.软链接就好像是指针一样。而硬链接就是引用。
实验举例:
硬链接时,新增加一个 inode 链接到文件的数据块;而符号链接时,只是新创建了一个文件,它指向所链接的文件。
# 1. 使用文件 /oradata2/yct/rc.local 进行测试
[oracle@sbdatabase yct]$ pwd
/oradata2/yct
[oracle@sbdatabase yct]$ ll
total 4
-rwxr-xr-x 1 oracle dba 220 Dec 9 16:30 rc.local
[oracle@sbdatabase yct]$ more rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local
# 2. 进行硬链接,inode 数增加
[oracle@sbdatabase yct]$ ln rc.local rc.local_hard.ln
[oracle@sbdatabase yct]$ ll
total 8
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local_hard.ln
# 3. 进行符号链接,inode数并没有增加
[oracle@sbdatabase yct]$ ln -s rc.local rc.local_soft.ln
[oracle@sbdatabase yct]$ ll
total 8
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local_hard.ln
lrwxrwxrwx 1 oracle dba 8 Dec 9 17:03 rc.local_soft.ln -> rc.local
# 4. 删除原文件后,硬链接仍可用,而符号链接失效
[oracle@sbdatabase yct]$ rm rc.local
[oracle@sbdatabase yct]$ ll
total 4
-rwxr-xr-x 1 oracle dba 220 Dec 9 16:30 rc.local_hard.ln
lrwxrwxrwx 1 oracle dba 8 Dec 9 17:03 rc.local_soft.ln -> rc.local
[oracle@sbdatabase yct]$ more rc.local_hard.ln
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local
[oracle@sbdatabase yct]$ more rc.local_soft.ln
rc.local_soft.ln: No such file or directory
# 5. 硬链接不能链接目录
[oracle@sbdatabase yct]$ rm -r *
[oracle@sbdatabase yct]$ ll
total 0
[oracle@sbdatabase yct]$ mkdir t1
[oracle@sbdatabase yct]$ ln t1 t1_hard.ln
ln: `t1': hard link not allowed for directory
[oracle@sbdatabase yct]$ ln -s t1 t1_soft.ln
[oracle@sbdatabase yct]$ ll
total 4
drwxr-xr-x 2 oracle dba 4096 Dec 9 17:09 t1
lrwxrwxrwx 1 oracle dba 2 Dec 9 17:09 t1_soft.ln -> t1
[oracle@sbdatabase yct]$
1.硬链接文件和原文件指向同样的数据块,有相同的inode号和文件属性,当删除原文件时,硬链接文件仍然存在有效。但硬链接文件不同于文件的复制。应该说硬链接文件的产生只是原文件所在目录文件的内容发生改变,原文件的数据并没有得到复制,而复制文件,磁盘上有两份数据。简单说,硬链接就是一个类似于别名的概念。当原来的名字没有了,别名照样可以使用。
2.符号链接也称为软链接,它是包含在文件中的路径名。当系统遇到符号链接时,它沿着符号链接提供的路径名前行,然后继续沿着符号链接后面的任何其余路径前行。如果路径名以一个 / 开始,则系统返回到 /(“根”)目录,并从该目录开始沿着路径前行。如果路径名未以 / 开始,则系统返回到前一级目录,并从那个目录开始沿着符号链接中的路径名前行。符号链接和windows系统的快捷方式含义一样,是新文件,和原文件的inode不同,该文件的内容是指向原文件的路径信息。
3.软链接就好像是指针一样。而硬链接就是引用。
实验举例:
硬链接时,新增加一个 inode 链接到文件的数据块;而符号链接时,只是新创建了一个文件,它指向所链接的文件。
# 1. 使用文件 /oradata2/yct/rc.local 进行测试
[oracle@sbdatabase yct]$ pwd
/oradata2/yct
[oracle@sbdatabase yct]$ ll
total 4
-rwxr-xr-x 1 oracle dba 220 Dec 9 16:30 rc.local
[oracle@sbdatabase yct]$ more rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local
# 2. 进行硬链接,inode 数增加
[oracle@sbdatabase yct]$ ln rc.local rc.local_hard.ln
[oracle@sbdatabase yct]$ ll
total 8
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local_hard.ln
# 3. 进行符号链接,inode数并没有增加
[oracle@sbdatabase yct]$ ln -s rc.local rc.local_soft.ln
[oracle@sbdatabase yct]$ ll
total 8
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local
-rwxr-xr-x 2 oracle dba 220 Dec 9 16:30 rc.local_hard.ln
lrwxrwxrwx 1 oracle dba 8 Dec 9 17:03 rc.local_soft.ln -> rc.local
# 4. 删除原文件后,硬链接仍可用,而符号链接失效
[oracle@sbdatabase yct]$ rm rc.local
[oracle@sbdatabase yct]$ ll
total 4
-rwxr-xr-x 1 oracle dba 220 Dec 9 16:30 rc.local_hard.ln
lrwxrwxrwx 1 oracle dba 8 Dec 9 17:03 rc.local_soft.ln -> rc.local
[oracle@sbdatabase yct]$ more rc.local_hard.ln
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local
[oracle@sbdatabase yct]$ more rc.local_soft.ln
rc.local_soft.ln: No such file or directory
# 5. 硬链接不能链接目录
[oracle@sbdatabase yct]$ rm -r *
[oracle@sbdatabase yct]$ ll
total 0
[oracle@sbdatabase yct]$ mkdir t1
[oracle@sbdatabase yct]$ ln t1 t1_hard.ln
ln: `t1': hard link not allowed for directory
[oracle@sbdatabase yct]$ ln -s t1 t1_soft.ln
[oracle@sbdatabase yct]$ ll
total 4
drwxr-xr-x 2 oracle dba 4096 Dec 9 17:09 t1
lrwxrwxrwx 1 oracle dba 2 Dec 9 17:09 t1_soft.ln -> t1
[oracle@sbdatabase yct]$
相关文章推荐
- linux笔记-硬链接和符号链接
- linux中硬链接和符号链接的区别
- linux中的硬链接和符号链接[转]
- linux创建符号链接的方法(硬链接和符号链接)
- linux 链接的使用:创建和删除符号连接
- linux符号链接命令ln详解
- linux下的硬连接和符号链接(软连接)
- Linux下的硬链接和符号链接
- linux中硬链接和符号链接的区别
- 【学习笔记】Linux的符号链接和硬链接
- linux 链接的使用 创建和删除符号连接
- linux下符号链接和硬链接的区别
- 【linux学习笔记】硬链接和符号链接以及复制的区别
- Linux报错-------ln: 无法创建符号链接"***": 只读文件系统
- Linux与windows共享目录下tar解压提示创建符号链接失败
- Linux上创建和更改硬链接和符号链接
- Linux下的符号链接文件
- WINDOWS也可以象LINUX一样建立符号链接
- linux命令:ln 链接文件--硬链接,符号链接(软链接)
- 一日一省linux:符号链接(软链接)和硬链接的区别