Linux

連結和複製

  • June 29, 2020

我對 UNIX 中的連結有一些疑問

  1. 我可以說 UNIX 中的軟連結類似於 Windows 中的快捷方式嗎?
  2. 複製和硬連結的區別?
  3. 誰能給我一個我應該更喜歡硬連結而不是複制的案例?

我現在太亂了。非常感謝任何幫助

基本的事情是,複製會復製文件,而連結(軟連結或硬連結)不會。

作為一個抽像模型,將您的目錄視為一個表,其中包含:

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.txtd.txt是完全相同的文件。如果我添加一個字元fd.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.exeWindows 快捷方式只是一個由(和其他一些程序)解釋的文件。但是 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

引用自:https://unix.stackexchange.com/questions/595669