SAND STORM

朝ぼらけ

2011年11月9日

Hard link,Symbolic link,Junction,Shortcutの差異

Filed under: 未分類 — Tags: — sajin @ 03:00

Windows 7 64bit+Link Shell Extensionとの組み合わせでのtest結果から得たもの。

Hard link Symbolic link Junction shortcut
icon
赤矢印(元fileも含め、すべてのhard link) ,最後の一つになると錠印

緑矢印

鎖印

青矢印
説明 dataに結びつけられた、”名”を増加する。一旦、fileというものをdata本体とそれを表す名称に分けて考えるとわかりやすい。file system上に、dataを表象しそれを通じて操作する”名”を新たに設ける。元のも含めその”名”どれもがdata本体と結びついており同格である。 参照先のfile/directoryの擬似体。元fileに手を加えることはなく、それを別の場所で「まるでそこにあるかの様に」扱うことのできるpointerをつくる。Programはそこに参照先のfile/directoryがあると勘違いし、まるでそこにあるかの様にsymbolic link通じて動作する。 参照先のdirectoryの擬似体。programはそこに参照先のdirectoryがあると勘違いし、まるでそこにあるかの様にjunctionを通じて動作する。 “開く”先のfile/directoryの場所(path)を格納したfile。単に場所を記録し、open(開く)やpasteに対応するlinkであり、これを通して参照先がまるでshortcutの場所にあるかのように操作できたりはしない。
補足 ※directoryには作成できない。
※別driveにまたがる作成は不可能。
実装はVista以降。
Symbolic linkは参照先のpathとsymbolic link自体のpathの両方を格納しており、そのどちらかひとつでも齟齬が出るとerrorが出て使えなくなる。
実装はVista以降。
参照先の情報のみを格納。
実装はWindows2000以降。
開く先のpathとその際のoptionを格納。
同driveでのcopy hard linkされていたdataとcopy元となったhard link fileの名で、新たに実data+名の通常のfileを生成。元のhard linkされたdataとは関係を失う。 可能だが、errorが出て使えなくなる。symbolic linkの存在する場所が変わって格納情報との齟齬が出るため。修正すれば再利用可能。 Junction名義のfolderを作り、参照先のdirectoryの中身をその中に複製。 shortcutを複製
同driveでのcut&paste 通常のfile移動と同様。file systemにおけるその”名”の位置情報(path)を変えているだけ。 同上 Junction名義のfolderを作り、参照先のdirectoryの中身をその中に複製、そして参照先のdirectoryの中身をすべて消去する。結果、空になった参照先のdirectory,junctionともに残存する。 shortcutを移動
別driveへのcopy hard linkされていたdataとcopy元となったhard link fileの名で、新たに実data+名の通常のfileを生成。元のhard linkされたdataとは関係を失う。 symbolic linkされていた参照先のfile/directoryのdataとsymbolic linkの名前で実態のあるfile/directoryを生成。元のsymbolic linkされたfileとは関係を失う。 Junction名義のfolderを作り、参照先のdirectoryの中身をその中に複製。 shortcutを複製
別driveへのcut&paste 同上  同上 Junction名義のfolderを作り、参照先のdirectoryの中身をその中に複製、そして参照先のdirectoryの中身をすべて消去する。結果、参照先のdirectory,junctionともに残存する。 shortcutを移動
Linkの削除 複数ある内はhard linkが消えるだけ。”名”が最後の一つになった時点で通常のfileと同じ存在になり、iconが錠に変化。それが削除されればdataも消える。 symbolic linkが消えるだけで、元は消えない。 junctionが消えるだけで、元は消えない。 shortcutが消えるだけで、元は消えない。
元fileの移動 問題なく使える。File system上のそのdataに結びつけられた名の一つの位置情報が変っただけ。 symbolic linkは使えなくなる Junctionは使えなくなる shortcutは使えなくなる

Link Shell Extensionの機能

source=pick元

SmartCopy : 元の構造を保ちつつ、link targetを置き換えて複製する。

Smart Mirror : Smart copyと似た操作を行うが、同一dataはそのままで新しいdataのみ上書き・追加し、元に存在しなくなったdataは消去して、pickした時のsourceの構造を再現する。つまり順次更新して両者間を同期させることを前提としている。

Delorean Copy :  souce元の変化を同じcopy先に反映するのではなく、日付ごとのbackupをつくっていく。最初SmartCopyでsourceを複製する。それを元に日付名の付加されたSmart Mirrorをsourceの変化に対応して順次作成していく。

Hardlink Clone : pickしたfolder内にある可能なものすべてをhard link化して複製する。dataはclone先のものが用いられ、sourceのそれとはlink関係はない。内部に含まれるjunction/symbolic linkはtargetが置き換えられる。

Symbolic Link Clone : pickしたfolder内にある可能なものすべてをsymbolic link化して複製する。ただし、directoryはされない。clone元にsymbolic linkがあった場合、pathに齟齬がでて使えなくなる。

junction/symbolic linkがfolder外部をtargetにしていても、複数選択でそのtargetをすべて含んで上記cloneを行えば正常にtarget関係も置き換えられる。

Mklink @ Microsoft|TechNet – command lineでsymbolic link,hard link,junctionを作り出すtool。


関連記事

4 Comments »

  1. backup test

    ・BunBackupなど単純なcopyによるbackup – Junction ×/Symbolic link ×/Hard link × すべてでlink名+実体dataのfileが新たに生成され、linkは全滅
    ・imagex – Junction ○/Symbolic link △(格納情報齟齬)/Hard link ×(実file化) symbolic linkはrestoreした場所が異なる為。
    ・EaseUS Todo Backup Free 3.0 – Junction ○/Symbolic link △/Hard link ○ imageを介したbackup->restoreですべて正常復帰。symbolic linkは場所が異なれば齟齬が出て使えなくなる。

    結果はEASEUSがいいが、GPTにちゃんと対応しておらず、GPT formatのdiskの場合、drive単位での操作はできずHDD丸ごとといった単位でしか扱えない。

    Comment by sajin — 2011年11月10日 @ 23:15

  2. Robocopy

    http://technet.microsoft.com/en-us/library/cc733145(WS.10).aspx

    /sec /copallなどを付けても単純copyされて全滅。

    Comment by sajin — 2011年11月10日 @ 23:53

  3. http://pcgamingwiki.com/wiki/Save_Folder_Cloud_Syncing#Dropbox

    外部のcloud storageにsymbolic linkを使ってsave dataを保存する。

    Comment by sajin — 2012年3月5日 @ 00:45

  4. hard linkなどを維持したいのでsmart copyでHDD移行を行ったら、dataの半分ぐらいの中身がむちゃくちゃになっていた。あまり信用できるものではないようだ。

    Comment by sajin — 2012年7月3日 @ 09:23

RSS feed for comments on this post. TrackBack URL

Leave a comment


sand-storm.net