[20160911]windows下建立硬連結.txt

lfree發表於2016-09-11
[20160911]windows下建立硬連結.txt

--大家知道linux ln命令可以建立硬連線或者軟連線.參考:
http://blog.itpub.net/267265/viewspace-1812272/

--實際上windows下也有類似ln命令,只不過許多人很少在命令列使用windows,對於裡面的命令列命令知道的更少.
--透過例子說明,使用fsutil就可以建立硬連線.補充一點建立這種硬連線僅僅支援NTFS檔案系統,不要指望支援FAT32.
--實際上這個測試,主要有使用者需求修改schema,連結http://blog.itpub.net/267265/viewspace-2124787/
--裡面提到操作要drop tablespac,這樣透過建立硬連線可以一定程度減少錯誤。

G:\>echo aaa > a.txt

G:\>dir a.txt
 驅動器 G 中的卷是 test
 卷的序列號是 E0CD-FBA5

 G:\ 的目錄

2016-09-11  16:52                 6 a.txt
               1 個檔案              6 位元組
               0 個目錄    154,017,792 可用位元組

G:\>fsutil
---- 支援的命令 ----
behavior        控制檔案系統行為
dirty           管理卷的被損壞的位數
file            檔案特定命令
fsinfo          檔案系統資訊
hardlink        硬連結管理
objectid        物件 ID 管理
quota           配額管理
reparsepoint    重分析點管理
sparse          稀疏檔案控制
usn             USN 管理
volume          卷管理

G:\>fsutil hardlink create
用法 : fsutil hardlink create <新檔名> <現有檔名>
例如 : fsutil hardlink create c:\foo.txt c:\bar.txt

G:\>fsutil hardlink create g:\a.txt g:\other\b.txt
錯誤:  系統找不到指定的檔案。

--//微軟真夠變態,新檔名要放在前面..

G:\>fsutil hardlink create  g:\other\b.txt g:\a.txt
為 g:\other\b.txt <<===>> g:\a.txt 建立了硬連結

G:\>echo bbb>> g:\other\b.txt


G:\>cat a.txt
aaa
bbb

G:\>cat \other\b.txt
aaa
bbb

--可以發現我修改了g:\other\b.txt而a.txt的內容也跟著變化.
--至於如何知道這2個檔案存在連結關係,在windows下從那裡看,我還真不知道,那位知道告訴我。

--我google看了一下:

Vista、Windows 7
在Vista和Win7下面,命令簡化了,是mklink,功能比XP中的fsutil強了很多。

D:\tools\rlwrap>mklink
mklink
建立符號連結。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      建立目錄符號連結。預設為檔案
                符號連結。
        /H      建立硬連結,而不是符號連結。
        /J      建立目錄聯接。
        Link    指定新的符號連結名稱。
        Target  指定新連結引用的路徑
                (相對或絕對)。

D:\tools\rlwrap>mklink c.sql a.sql
mklink c.sql a.sql
為 c.sql <<===>> a.sql 建立的符號連結


D:\tools\rlwrap>dir ?.sql /l
dir ?.sql /l
 驅動器 D 中的卷沒有標籤。
 卷的序列號是 0006-A37E

 D:\tools\rlwrap 的目錄

2015/03/14  22:23             4,926 a.sql
2016/09/11  20:52    <SYMLINK>      c.sql [a.sql]
               3 個檔案          4,980 位元組
               0 個目錄 97,416,499,200 可用位元組


D:\tools\rlwrap>mklink /h d.sql a.sql
mklink /h d.sql a.sql
為 d.sql <<===>> a.sql 建立了硬連結


D:\tools\rlwrap>dir ?.sql /l
dir ?.sql /l
 驅動器 D 中的卷沒有標籤。
 卷的序列號是 0006-A37E

 D:\tools\rlwrap 的目錄

2015/03/14  22:23             4,926 a.sql
2016/09/11  20:52    <SYMLINK>      c.sql [a.sql]
2015/03/14  22:23             4,926 d.sql
               3 個檔案          9,852 位元組
               0 個目錄 97,416,499,200 可用位元組

--軟連線可以發現,但是如何確定硬連線還是不知道。

(WS.10).aspx

D:\tools\rlwrap>fsutil hardlink list d.sql
\tools\rlwrap\a.sql
\tools\rlwrap\d.sql

D:\tools\rlwrap>fsutil hardlink
---- 支援的 HARDLINK 命令 ----

create          建立硬連結
list            列舉檔案上的硬連結

--另外一臺XP的機器沒有list這個命令的說明,不知道是否是版本的問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2124812/,如需轉載,請註明出處,否則將追究法律責任。

相關文章