Windows で tar形式のファイルを解凍した場合、アーカイブ元がハードリンク・シンボリックリンクだったファイルは、サイズ0で展開されることがあります。
例えば、下記は Cygwin のパッケージですが、これにはハードリンクのファイルが含まれています。
http://ftp.iij.ad.jp/pub/cygwin/x86/release/dash/dash-0.5.8-2.tar.xz
dash-0.5.8-2.tar.xz を Linux上で展開し、ファイルを見てみます。
tar xf dash-0.5.8-2.tar.xz ls -li ./usr/bin
以下のように、iノードが 13898885 と一緒なので、ash.exe と dash.exe はハードリンクです。
13898885 -rwxr-xr-x 2 test test 97831 10月 1 08:26 ash.exe 13898885 -rwxr-xr-x 2 test test 97831 10月 1 08:26 dash.exe
これを Windows上で展開する場合、LhaForge(tar32.dll) , Lhaplus, 7-Zip では問題があります。
ハードリンクのファイル(上記ではファイル名 dash)のサイズが0バイトになって展開されます。
一方、Tar for Windowsでは正しく展開されます。
コマンド fsutil で確認してみると、アーカイブ元の通り、ファイル dash と ash がハードリンクで展開されています。
C:\tmp\usr\bin>fsutil hardlink list dash.exe \tmp\usr\bin\dash.exe \tmp\usr\bin\ash.exe
シンボリックリンクも同様で、Tar for Windowsでは正しく展開されます。
なお、シンボリックリンクは Windows上ではショートカットとして展開されます。
ハードリンクは先に示した通り、Windows上でもハードリンクで展開されます。
コメント