[linux]cp和mv对文件和链接影响的区别
有文件a,a1為其硬鏈接,即: ln a a1
現(xiàn)在有文件b,對其進行以下兩種操作:
1. mv b a
2. cp b a
????? 問這兩種操作對a1有何影響?
?
??? 這個問題以前還真沒關(guān)注過,之前的項目的做法是對一個文件用ln old back, 然后mv back histroy/,過一段時間若有新文件產(chǎn)生是進行mv new old操作并做類似的backup操作,沒有想過在做mv new old的時候是否對之前的back文件造成任何的影響(畢竟backup文件在不出問題的情況下沒人去關(guān)心)。
今天做了一個實驗搞明白了其中的奧秘。
1. 創(chuàng)建文件a 和 ln a a1
2. 創(chuàng)建文件b
?
3. 執(zhí)行mv b a
可以看出a的inode變?yōu)榱薭的inode,而a1不變。并且a的變?yōu)閎文件的內(nèi)容,a1內(nèi)容不變。
而且a1對應(yīng)的inode的引用數(shù)變?yōu)榱?。
4. 將環(huán)境重置
?
5. 執(zhí)行 cp b a
?
可以看出inode和引用數(shù)沒有發(fā)生變化, 但是a和a1的內(nèi)容變?yōu)榱薭的內(nèi)容。
6. 執(zhí)行 cp a a2
?
這時可以看出a2的inode已經(jīng)和a、a1不同,并且a,a1的inode和引用數(shù)都沒有發(fā)生變化。
?
結(jié)論: mv 操作只是改變文件的inode,并沒有對inode所指向的磁盤block做任何的改動。
cp操作是改變(創(chuàng)建)inode所指向的block(在創(chuàng)建時,會分配新的block)。
?
注:cp -i選項不在此討論范圍內(nèi)。
?
?
【原文地址】http://www.cnblogs.com/wwillforever/archive/2012/01/30/2332396.html
轉(zhuǎn)載于:https://www.cnblogs.com/crazypig/archive/2012/05/23/2514883.html
總結(jié)
以上是生活随笔為你收集整理的[linux]cp和mv对文件和链接影响的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: STL源码学习----集合相关算法
- 下一篇: 简单弹出遮障层实例
