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

linux 下的软连接和硬链接

时间:2018-03-06 17:16:23      阅读:209      评论:0      收藏:0      [点我收藏+]

标签: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
    ```
    可以看出软连接失效,但是硬链接不受影响
    1. linux 有个专门的指令 readlink,这个指令是得到软连接的地址,比如上例中就可以得到软链接指向的源文件的地址
    ubuntu@ubuntu-virtual-machine:~/work/shell/file$ readlink soft_test 
    test
    

    linux 下的软连接和硬链接

    标签:linux 软连接   linux硬链接   

    原文地址:http://blog.51cto.com/6306331/2083477

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