連結和複製
我對 UNIX 中的連結有一些疑問
- 我可以說 UNIX 中的軟連結類似於 Windows 中的快捷方式嗎?
- 複製和硬連結的區別?
- 誰能給我一個我應該更喜歡硬連結而不是複制的案例?
我現在太亂了。非常感謝任何幫助
基本的事情是,複製會復製文件,而連結(軟連結或硬連結)不會。
作為一個抽像模型,將您的目錄視為一個表,其中包含:
filename where the file is content of the file --------------------------------------------------------- a.txt sector 13456 abcd b.txt sector 67679 bcde
當我複製文件時
cp a.txt c.txt
,我得到以下資訊:filename where the file is content of the file --------------------------------------------------------- a.txt sector 13456 abcd b.txt sector 67679 bcde c.txt sector 79774 abcd
當我硬連結文件
ln b.txt d.txt
時,我得到以下資訊:filename where the file is content of the file --------------------------------------------------------- a.txt sector 13456 abcd b.txt sector 67679 bcde c.txt sector 79774 abcd d.txt sector 67679 bcde
所以,現在
b.txt
和d.txt
是完全相同的文件。如果我添加一個字元f
,d.txt
它也會出現在b.txt
硬連結的問題在於您只能在同一個文件系統上進行。因此,大多數人使用軟連結,
ln -s a.txt e.txt
:filename where the file is content of the file --------------------------------------------------------- a.txt sector 13456 abcd b.txt sector 67679 bcde c.txt sector 79774 abcd d.txt sector 67679 bcde e.txt sector 81233 "Look at where a.txt is located"
作為一階近似,軟連結有點像 Windows 中的快捷方式。但是,軟連結是文件系統的一部分,因此適用於每個程序。
explore.exe
Windows 快捷方式只是一個由(和其他一些程序)解釋的文件。但是 Windows 程序需要在解釋快捷方式時做一些事情,而在 Linux 中,軟連結是自動處理的。連結的大多數使用都使用軟連結,因為它們更靈活,可以指向其他文件系統,可以與 NFS 等一起使用。
我見過的硬連結的一個案例是確保文件不會被使用者刪除。系統管理員在“指針”目錄中創建了硬連結,當使用者無意中
rm
編輯了一個文件(這顯然在那裡發生了很多事情)時,他可以在不使用磁帶、沒有雙磁碟空間等的情況下立即恢復文件。其工作原理如下:
filename where the file is content of the file --------------------------------------------------------- a.txt sector 13456 abcd b.txt sector 67679 bcde
當使用者鍵入
rm a.txt
時,表格將是:filename where the file is content of the file --------------------------------------------------------- b.txt sector 67679 bcde
所有引用
a.txt
都失去了。可以為其他文件回收磁碟空間。但是,如果系統管理員保留重要文件的連結副本,則表格將是:
filename where the file is content of the file --------------------------------------------------------- a.txt sector 13456 abcd b.txt sector 67679 bcde link.a.txt sector 13456 abcd link.b.txt sector 67679 bcde
當使用者現在鍵入
rm a.txt
時,表格變為:filename where the file is content of the file --------------------------------------------------------- b.txt sector 67679 bcde link.a.txt sector 13456 abcd link.b.txt sector 67679 bcde
因為還有對從 13456 開始的文件的引用,所以文件的磁碟空間不會被標記為空閒。所以文件還在。當使用者現在
a.txt
詢問是否有可能以某種方式恢復. 以及最新的編輯。(當然,它位於同一文件系統的另一個目錄中,這並不意味著您可以忘記備份,但在當時和地點,這是一個有用的選項)。ln link.a.txt a.txt``a.txt``link.a.txt