Linux下的硬链接和符号链接

硬链接和软链接的几点区别: 

 

 

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]$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值