熟練使用NTFS的檔案鏈結技術

2022-04-11 18:07:39 字數 2492 閱讀 8677

硬鏈結和軟鏈結介紹:

硬連線指向的是i節點(inode),而軟連線指向的是路徑(path) ,又稱符號鏈結。

硬鏈結可理解為對i節點的引用,最初的檔名與所有的硬鏈結地位是對等的,比如為檔案a建立了硬鏈結b、c、d。那麼a、b、c、d之中只要有乙個檔案未刪除,這個檔案就可通過未刪除的名稱訪問的。你也可以認為每個檔案都可認為至少有乙個硬鏈結,就是說a也是乙個硬鏈結。

軟鏈結特性上有些類似於快捷方式,比如為原檔案a建立了軟鏈結b、c、d。刪除b、c 或d訪問到a,但是只要刪除了a,軟鏈結就不可用了。但是windows下的快捷方式只能在資源管理器中有用,它只是乙個.lnk檔案。如果是乙個目錄的快捷方式,它是不能通過cd命令或路徑進入的。

1、不允許給目錄建立硬鏈結;

2、只有在同一檔案系統中的檔案之間才能建立鏈結。

熟悉過unix/linux都應該知道,unix/linux用ln建立硬鏈結,ln -s建立軟鏈結,那麼windows下是如何做的呢?

xp和win7採用不同的方式,其中xp方式如下:

一、只能適用於ntfs檔案系統;

1)使用命令fsutil hardlink建立硬鏈結;

語法:fsutil hardlink create newfilename existingfilename

引數:create 建立現有檔案和新檔案之間的ntfs硬鏈結。ntfs硬鏈結與posix硬鏈結相似;

newfilename 指定要將建立硬鏈結的檔案;

existingfilename 指定要從中建立硬鏈結的檔案。

如果你想在自己的程式裡建立硬鏈結,那也是很容易的,只需要乙個很簡單的win32 api函式:

1

bool createhardlink(

2 lpctstr lpfilename, //

link name name

3 lpctstr lpexistingfilename, //

target file name

4lpsecurity_attributes lpsecurityattributes

5 );

2)使用junction外部命令建立軟鏈結。

ntfs只支援對目錄的軟鏈結,微軟把它稱作junction。但是對於檔案的軟鏈結,微軟也有提供了類似的解決方案,那就是快捷方式(shortcut/.lnk檔案)。不過軟鏈結和快捷方式不是乙個層次上的東西,前者是底層檔案系統的功能,後者是應用層的功能。

junction的命令語法是:

junction linkdirectory existingdirectory

例如:junction d:\link c:\windows

將為c:\windows建立乙個鏈結目錄d

:\link,c和d分割槽都要是ntfs格式,在資源管理器和dir顯示中d:\link都以目錄的形式存在的。d:\link就像是c:\windows的乙個引用一般,刪除 d:\link目錄中的內容也就是刪除了d:\windows中的內容,但刪除d:\link本身是不會影響到c:\windows的。

相應的,在程式中也有乙個api函式createsymboliclink支援建立軟鏈結,不過來得太晚了,要在windows vista和windows server 2008上才支援,先還是別想了。api原型是:

1

bool winapi createsymboliclink(

2__in lpcwstr lpsymlinkfilename,

3__in lpcwstr lptargetfilename,

4__in dword dwflags

5 );

引數:lpsymlinkfilename 要建立的符號鏈結名稱;

lptargetfilename 符號鏈結所對應目標的名稱;

dwflags 標識目標是檔案還是目錄,取值0x0代表是檔案,symbolic_link_flag_directory或0x1代表是目錄。

二、借助於更為方便的工具。

使用linkshellextension右鍵擴充套件工具:

(xp漢化版本)

win7中的方法:

一、使用mklink命令;

windows的NTFS也有硬鏈結

軟 硬鏈結 是linux使用者比較熟悉的名次,原來在windows系統中,ntfs檔案系統也存在 軟 硬鏈結 在檔案系統中,硬鏈結就是檔案的目錄入口,也就是通過硬鏈結來定位到該檔案在硬碟上的儲存區塊。刪除檔案則就是把該檔案的入口硬鏈結刪除,作業系統認為該儲存區塊沒有被使用,就會在需要的時候將資料抹除...

熟練使用有稜有角的記憶體

記憶體其實也沒什麼神秘的,就是乙個整合ic,這型別的ic一般包含四種型別的引腳 電源與地引腳,控制引腳 讀使能 寫使能 資料位引腳以及多位位址引腳。記憶體大小計算方式為2的 資料位引腳數 位址位引腳數和 除以2的8次方,單位我位元組,byte。記憶體的邏輯模型可以用乙個摩天大樓來模擬,大樓的每一層為...

熟練使用有稜有角的記憶體

問題 有十個位址訊號引腳的記憶體ic可以指定的位址範圍是多少?0 1023共1024個位址 高階程式語言中的資料型別表示的是什麼?佔據記憶體區域的大小和儲存在該記憶體區域的資料型別 在32位記憶體位址的環境中,指標變數的長度是多少?32位,即4位元組 與物理記憶體有著相同構造的陣列的資料型別長度是多...