linux硬連線與符號連線
linux下有兩種連線檔案,分別是
1.硬連線(hard link)
建立一個新的檔名,與目標檔案的inode連線,如果此時訪問連線檔案,實際上訪問的是目標檔案的inode,然後通過inode找到目標檔案所在的block號碼,然後讀取檔案內容。
我們知道一個檔案只會佔用一個inode,然後通過inode的指向讀取檔案內容。通過硬連線方式建立連線檔案,可實現多個檔名同時指向一個inode,注意是多個檔名,不是多個檔案,若刪除其中一個“檔名”,實際上只是刪除這個檔名與inode的連線,此時通過其他檔名還是可以正常訪問檔案內容。
2.符號連線(symbolic link)
與硬連線不同的是,符號連線建立的不是檔名,而是一個真實的檔案,檔案的內容就是目標檔案所在的目錄,根據該目錄就可以通過目錄樹一層一層地訪問,直到找到目標檔案。
通過符號連線,若刪除原始檔,此時根據目錄就無法找到原始檔,就會提示出錯。
3.兩種連線檔案對比
1.硬連線只是建立檔名,只是在該目錄下的block多寫入一條關聯資料(檔名與inode的關聯),通常不會佔用inode,也不會耗用block,而符號連線建立的是一個獨立的新檔案,會佔用inode與block。
2.硬連線刪除檔名,不影響其他連線檔案正常訪問檔案內容,而對於符號連線,若刪除原始檔,此時其他連線檔案在訪問檔案內容時會出錯。
3.硬連線不支援連線目錄,因為如果連線到目錄,此時連線目錄下的所有檔案還要跟目標目錄下的檔案一一建立硬連線,複雜度太高,而符號連線可以支援連線目錄,因為它是直接跳轉到真實的目錄下。