CpGNU cp:
GNU cp:--link
和 --reflink=always
有什麼區別?
--link
和有什麼區別--reflink=always
?我使用以下命令作為
mv
替代,我想知道 using--reflink
是否是更好的選擇。command gcp -r --link --archive --verbose "${opts[@]}" "$@" # delete the sources manually
--link
導致cp
創建硬連結而不是複制。一旦“複製”完成,假設它在同一個文件系統中(硬連結所必需的),該文件的單個實例會出現在磁碟上,並且有兩個或多個目錄條目指向它。這是所需的外部狀態,即多個目錄條目指向同一個文件這一事實是可見的——它們指向同一個 inode。通過其中一個目錄條目所做的更改也將通過另一個可見。
--reflink=always
如果可能,請求優化副本。這可以採取多種形式;最著名的是寫時複製,但它也可以實現為網路文件系統上的伺服器端副本。複製完成後,可能會出現數據塊的單個副本存在於磁碟上,但是有兩個文件,並且每個目錄條目指向不同的文件的情況。通過一個目錄條目所做的更改將不會通過另一個可見;每個文件都有一個獨立的生命週期(共享數據塊的副作用除外,例如磁碟損壞會影響兩個文件)。換句話說,
--link
明確請求創建指向同一文件的新目錄條目,共享後續更改。--reflink=always
請求創建具有潛在優化和隔離後續更改的新文件。作為
mv
替代方案,--link
更合適的是--reflink=always
——它將導致作業系統的工作量減少。