老牛博客,源自生活
让知识服务生活

导航

 

有同事咨询我:文件的link操作和copy操作的区别是什么呢?

我简要描述为:link是不同指针指向同一个文件块,然后形成了两个文件,Inode值是一样的;

             copy操作是整个文件的复制操作,属于两个不同、独立的文件块,Inode值是不同的;

   大家都是学习C语言的,举例来说:

            link就是:从一个指针向另一个指针赋值,操作的只是地址和内存使用的计数器;在free操作时,会考虑使用该内存块的指针数,如果大于1,则内存不真正释放;

            copy就是:从一个变量向另一个变量赋值,操作的是两块独立的内存空间;

给其做了一个演示如下:

niujie@niujie-ThinkPad-T400:~/下载$ touch test
niujie@niujie-ThinkPad-T400:~/下载$ ll test
-rw-rw-r-- 1 niujie niujie 0  4月 23 13:14 test
niujie@niujie-ThinkPad-T400:~/下载$ link test test1
niujie@niujie-ThinkPad-T400:~/下载$ ll
……
-rw-rw-r--  2 niujie niujie        0  4月 23 13:14 test
-rw-rw-r--  2 niujie niujie        0  4月 23 13:14 test1
……

niujie@niujie-ThinkPad-T400:~/下载$ stat test
  文件:"test"
  大小:0             块:0          IO 块:4096   普通空文件
设备:80bh/2059d    Inode:1445452     硬链接:2
权限:(0664/-rw-rw-r--)  Uid:( 1000/  niujie)   Gid:( 1000/  niujie)
最近访问:2012-04-23 13:14:56.214626305 +0800
最近更改:2012-04-23 13:14:50.898599961 +0800
最近改动:2012-04-23 13:15:17.970734188 +0800
创建时间:-
niujie@niujie-ThinkPad-T400:~/下载$ stat test1
  文件:"test1"
  大小:0             块:0          IO 块:4096   普通空文件
设备:80bh/2059d    Inode:1445452     硬链接:2
权限:(0664/-rw-rw-r--)  Uid:( 1000/  niujie)   Gid:( 1000/  niujie)
最近访问:2012-04-23 13:14:56.214626305 +0800
最近更改:2012-04-23 13:14:50.898599961 +0800
最近改动:2012-04-23 13:15:17.970734188 +0800
创建时间:-
niujie@niujie-ThinkPad-T400:~/下载$ cp test test2
niujie@niujie-ThinkPad-T400:~/下载$ stat test2
  文件:"test2"
  大小:0             块:0          IO 块:4096   普通空文件
设备:80bh/2059d    Inode:1445675     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/  niujie)   Gid:( 1000/  niujie)
最近访问:2012-04-23 13:18:05.163563254 +0800
最近更改:2012-04-23 13:18:00.063537966 +0800
最近改动:2012-04-23 13:18:00.063537966 +0800
创建时间:-

 

posted on 2012-04-23 13:29  GeekyNiu  阅读(1436)  评论(0编辑  收藏  举报