linux 下如何拷贝软连接,linux 下的软连接和硬链接

linux下创建硬链接相当于对源文件的拷贝,生成的新文件和源文件的inode值时一致的,当源文件删除后,硬链接不会失效

软连接类似于源文件的快捷方式,两者的inode不同,它里面保存的时源文件的路径信息,当源文件的删除消失后,软连接失效,此时如果在新建源文件,则软链接继续生效

测试一下

实验环境:ubuntu 14.04 kernel:3.13.0-24-generic

1. 新建一个测试文件

touch test

使用stat或者ls -i选项去查看test的inode值

```

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ stat test

文件:"test"

大小:0 块:0 IO 块:4096 普通空文件

设备:801h/2049d Inode:4208823 硬链接:1

权限:(0664/-rw-rw-r--) Uid:( 1000/ ubuntu) Gid:( 1000/ ubuntu)

最近访问:2018-03-06 15:51:01.689080893 +0800

最近更改:2018-03-06 15:51:01.689080893 +0800

最近改动:2018-03-06 15:51:01.689080893 +0800

创建时间:-

```

inode 值是 Inode:4208823

2. 创建硬链接

```

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ ln test hard_test

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ stat hard_test

文件:"hard_test"

大小:0 块:0 IO 块:4096 普通空文件

设备:801h/2049d Inode:4208823 硬链接:2

权限:(0664/-rw-rw-r--) Uid:( 1000/ ubuntu) Gid:( 1000/ ubuntu)

最近访问:2018-03-06 15:51:01.689080893 +0800

最近更改:2018-03-06 15:51:01.689080893 +0800

最近改动:2018-03-06 15:53:54.857425605 +0800

创建时间:-

```

可以看出inode 相同

3. 创建软连接

```

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ ln -s test soft_test

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ stat soft_test

文件:"soft_test" -> "test"

大小:4 块:0 IO 块:4096 符号链接

设备:801h/2049d Inode:4208824 硬链接:1

权限:(0777/lrwxrwxrwx) Uid:( 1000/ ubuntu) Gid:( 1000/ ubuntu)

最近访问:2018-03-06 15:56:35.129543502 +0800

最近更改:2018-03-06 15:55:04.201563628 +0800

最近改动:2018-03-06 15:55:04.201563628 +0800

创建时间:-

```

可以看出,inode不同,软连接和源文件是两个不同的文件,只是它其中保存的是源文件的路径

现在在源文件中写入内容,观察三个的文件的变化

```

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ echo "123" >test

ubuntu@ubuntu-virtual-machine:~/work/shell/file$

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat test

123

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat soft_test

123

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat hard_test

123

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ echo "456" >>hard_test

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat hard_test

123

456

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat test

123

456

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat soft_testtest

cat: soft_testtest: 没有那个文件或目录

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat soft_test

123

456

```

4. 删除源文件观察

```

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ rm test

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ ll

总用量 12

drwxrwxr-x 2 ubuntu ubuntu 4096 3月 6 16:01 ./

drwxrwxr-x 3 ubuntu ubuntu 4096 3月 6 15:25 ../

-rw-rw-r-- 1 ubuntu ubuntu 12 3月 6 16:00 hard_test

lrwxrwxrwx 1 ubuntu ubuntu 4 3月 6 15:55 soft_test -> test

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat soft_test

cat: soft_test: 没有那个文件或目录

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ cat hard_test

123

456

789

```

可以看出软连接失效,但是硬链接不受影响

linux 有个专门的指令 readlink,这个指令是得到软连接的地址,比如上例中就可以得到软链接指向的源文件的地址

ubuntu@ubuntu-virtual-machine:~/work/shell/file$ readlink soft_test

test

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值