硬連接
硬連接
硬連接是對於同一文件系統的一個文件的連接,節點是文件存在的唯一標識,在文件系統中是唯一的,但在不同的文件系統則有可能重複。這樣的話,在不同文件系統中作鏈接時,是不能使用ln A B,應該用符號連接,即是軟連接,它只是包含了系統中一個完整的路徑名引用。硬連接就是記錄了文件的地址,你在文件管理器中看到的每個文件都是磁碟里文件的“硬連接”。當一個文件的所有硬連接都被刪除的時候,該文件佔用的空間才可以被新加入的數據覆蓋。
XP 也有硬連接?沒錯!不過,先聲明,這個僅僅是NTFS才有的。另外要注意的是,硬連接 不能跨卷的,簡單的說就是 不能在C盤給D盤的文件創建硬連接。
XP下面也有硬連接,只是知道的人不多(個人覺得是因為沒有UI,所以知道的人少,但在win7裡面被認為是“新功能”,那是 因為WinSxS文件夾中的文件應用了硬連接技術,而讓“硬連接”這一名詞在Win7中名聲大噪。搜索“Win7 硬連接”,大半的結果是說這件事的),所以應用也不廣泛。
創建方法
比如:
fsutil hardlink create C:\硬連接.txt C:\原文件.txt
這樣C:\原文件.txt就多了一個“別名”:硬連接.txt。
另外,fsutil還有其它很有用的功能,比如,改短名,詳細自己輸入fsutil慢慢看。
上面說的是為文件創建硬連接,能不能給文件夾創建硬連接呢?可以用一個工具—— junction.exe,可以用來 創建文件夾硬連接,這個可以跨分區——你是否產生了“把D:\TEST 指向 C:\ ,然後再用 fsutil hardlink create D:\test.ini D:\TEST\boot.ini 這個命令來創建跨分區文件硬連接”的想法呢?我試了,失敗,輸出結果如下(因為我的junction剛下載,是一個壓縮包,就用WinMount虛擬成一個盤了。粗體字是系統輸出的,其中包含網址的那行刪掉了):
Z:\>junction.exe d:\test c:\
Junction v1.05 - Windows junction creator and reparse point viewer
Created: d:\test
Targetted at: c:\
Z:\>fsutil hardlink create d:\test.exe d:\test\boot.ini
新鏈接和現有文件必須在同一個卷上。
junction命令還可以把空文件夾刪除掉:
D:\>md TestJunctionDir
D:\>junction TestJunctionDir /d
Deleted TestJunctionDir.
如果用於非空文件夾就會出錯:
C:\Temp\test>md TestJunctionDir
C:\Temp\test>dir > TestJunctionDir\test.txt
C:\Temp\test>junction TestJunctionDir /d
Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals
Error deleting TestJunctionDir: ???????
【注意事項】
使用junction做文件夾連接需要注意的是:不能直接在資源管理器裡面刪除文件夾的連接,要用下面的命令來刪除,否則源文件夾裡面的內容也會被刪除,切記切記。
junction 文件夾連接名 /d
在Vista和Win7下面,命令簡化了,是 mklink,功能比XP中的fsutil強了很多。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 創建目錄符號鏈接。默認為文件符號鏈接。
/H 創建硬鏈接,而不是符號鏈接。
/J 創建目錄聯接。
Link 指定新的符號鏈接名稱。
Target 指定新鏈接引用的路徑
至於Windows 2000就不清楚了,不過硬連接是NTFS的特性,如果沒有fsutil程序,從XP中複製一個過去應該也是可以的。
上面介紹的是命令行,有沒有更方便的辦法呢?當然,大家用過右鍵拖動文件嗎?用右鍵拖動文件,會有“複製文件、移動文件、創建快捷方式”等菜單項,要是有“創建硬連接”該多好啊!抱著這種想法搜索了一下,找到了個好東西: Link Shell Extension
這個軟體支持多種語言,其中就包括中文。安裝了這個軟體之後,文件或文件夾右鍵菜單就多了一項“選擇源連接點”——類似常用的“複製”命令,選擇連接點之後,就可以在空白地方點擊右鍵,再選擇“創建連接點”。
也可以用 右鍵拖動文件或文件夾來創建連接點,非常方便。
如果選擇的是文件夾,則有三個選項:目錄連接點、硬連接副本、智能副本。這三者的區別如下:
目錄連接點就是上面介紹的junction,不過改進了不少——不會發生上面說的刪除連接點而導致刪除文件的悲劇了。
硬連接副本
就是複製一個文件夾結構,並創建所有文件的硬連接
智能副本
就是創建一個副本,和普通的複製不同的是,“智能副本”把文件夾內部的硬連接關係也複製了。
功能跟上面的LSE是一樣的,具體使用方法請看其官方網站。
Dupemerge可以查找硬碟上的重複文件,並為其創建硬連接,以達到節省空間的目的。
需要注意的是,不要將一些軟體中“雷同的”——通常是零位元組——配置文件也弄成硬連接了。
如果你有幾個版本的Eclipse的話,用硬連接來共享插件,那就可以省下很多硬碟空間了。
把需要備份的文件創建硬連接放到一個文件夾(比如C:\Backup),在重裝系統的時候就把Backup文件夾複製到其它盤就行了。
只要你需要同步的文件放在同一個NTFS分區,就可以對同步軟體說Byebye了。直接添加相應的硬連接就可以實現同步的功能了。
不在同一個分區的話也可以用“文件夾連接”來實現同步的功能,不過前提還是要NTFS分區。