有同事咨询我:文件的link操作和copy操作的区别是什么呢?
我简要描述为:link是不同指针指向同一个文件块,然后形成了两个文件,Inode值是一样的;
copy操作是整个文件的复制操作,属于两个不同、独立的文件块,Inode值是不同的;
大家都是学习C语言的,举例来说:
link就是:从一个指针向另一个指针赋值,操作的只是地址和内存使用的计数器;在free操作时,会考虑使用该内存块的指针数,如果大于1,则内存不真正释放;
copy就是:从一个变量向另一个变量赋值,操作的是两块独立的内存空间;
给其做了一个演示如下:
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
创建时间:-