現在有檔案b,對其進行以下兩種操作:
1. mv b a
2. cp b a
問這兩種操作對a1有何影響?
這個問題以前還真沒關注過,之前的專案的做法是對乙個檔案用ln old back, 然後mv back histroy/,過一段時間若有新檔案產生是進行mv new old操作並做類似的backup操作,沒有想過在做mv new old的時候是否對之前的back檔案造成任何的影響(畢竟backup檔案在不出問題的情況下沒人去關心)。
今天做了乙個實驗搞明白了其中的奧秘。
1. 建立檔案a 和 ln a a1
2. 建立檔案b
3. 執行mv b a
可以看出a的inode變為了b的inode,而a1不變。並且a的變為b檔案的內容,a1內容不變。
而且a1對應的inode的引用數變為了1。
4. 將環境重置
5. 執行 cp b a
可以看出inode和引用數沒有發生變化, 但是a和a1的內容變為了b的內容。
6. 執行 cp a a2
這時可以看出a2的inode已經和a、a1不同,並且a,a1的inode和引用數都沒有發生變化。
結論: mv 操作只是改變檔案的inode,並沒有對inode所指向的磁碟block做任何的改動。
cp操作是改變(建立)inode所指向的block(在建立時,會分配新的block)。
注:cp -i選項不在此討論範圍內。
cp和mv命令的一點區別
我們知道cp是複製,mv就是剪下,在windows下的叫法 mv home jack coco.txt root試試這句話然後檢視一下檔案的屬主和屬組有無改變,結果是沒有任何改變!再試試這一句話 cp home jack coco.txt root你會發現原來的 coco.txt 的屬組和屬主都是j...
Linux中軟鏈結,硬鏈結和拷貝檔案(cp)的區別
拷貝檔案 cp 會重新建立乙個檔案並且複製相同的內容,占用新的空間,新的inode,這是兩個檔案。對於硬鏈結,原始檔改變之後其硬鏈結也會同步更新。也就相當於是拷貝 cp p 同步更新 原始檔刪除之後依舊可以開啟這個硬鏈結。硬鏈結只能用於檔案,不能用於目錄。硬鏈結不能跨分割槽。其i節點和原始檔是一樣的...
Linux的cp複製和mv移動命令的超詳細介紹
1 複製檔案 cp 原始檔 目的資料夾 新檔名 將檔案複製到某個地方,且命名為自己想要的名字 cp 原始檔 目的資料夾 將檔案複製到某個地方,還用老名字 2 複製資料夾 cp r 源資料夾 目的資料夾 新資料夾名 將資料夾複製到某個地方,且命名為自己想要的資料夾名 cp r 源資料夾 目的資料夾 將...