web-dev-qa-db-ja.com

シンボリックリンクと7zip

フォルダを.7zアーカイブに圧縮しようとしています。このフォルダには、フォルダの外にある他のもの(ディレクトリとファイルの両方)へのシンボリックリンクが含まれています。

どうやら7Zipはリンク自体をアーカイブするだけで、私が意図したものではありません。 7Zipに、リンク自体ではなく、リンク先のものをアーカイブするように指示する方法はありますか? (つまり、C:\stuff\fooを指すシンボリックリンク名fooがある場合、0バイトのシンボリックリンクではなく、fooの代わりにC:\stuff\fooディレクトリをアーカイブに含めたい。))

問題のファイルとフォルダーを追加する以外に、適切な回避策はありますか?シンボリックリンクを介して参照されるファイルは約10,000あるため、それらを個別に追加すると数時間かかることがあります。実際のファイルを含むステージングフォルダーを作成し、それを7Zipに渡すプログラムがある可能性があります。または、シンボリックリンクをより適切に処理するアーカイバだけです。

Windows Vistaを実行しています。すべてのリンクはシンボリックリンクです(例:mklink link targetおよびmklink /D link targetで作成)。

編集:

より小さいテストディレクトリのdirコマンド出力:

C:\...>dir
 Volume in drive C is OS
 Volume Serial Number is 0A3D-CD6E

 Directory of C:\...

09/04/2010  18:12    <DIR>          .
09/04/2010  18:12    <DIR>          ..
09/04/2010  18:10               975 real file.txt
09/04/2010  18:11    <SYMLINK>      test file.txt [..\test file.txt]
               2 File(s)            975 bytes
               4 Dir(s)   5,214,355,456 bytes free

7Zipを使用してその7zアーカイブを作成すると、real file.txtが含まれますが、test file.txtは0バイトのファイルとして追加されますが、リンクされているファイルは存在し、50KBです。

19
Fire Lancer

どうやら7Zipは自分自身のリンクをアーカイブしているだけで、私が意図したものではありません。 7Zipに、リンク自体ではなく、リンクするものもアーカイブするように指示する方法はありますか

いいえ、明らかに(残念ながら)そうではありません。これを要求する7Zipに関するバグレポートが実際にあります: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481 2009年8月にオープンし、以降は触れられていません: -/。

失敗した場合、問題のファイルとフォルダーを追加する以外に、その周りに合理的なものはありますか?シンボリックリンクを介してのものを含めると、10000個のファイルがあり、その大部分はシンボリックリンクを介しているため、それらをすべて個別に追加すると数時間かかります...

十分なスペース(および時間)がある場合は、フォルダーのコピーを作成して、シンボリックリンクをターゲットに置き換えます。たとえば、 Robocopy とそのスイッチ/slを使用します。

/ slターゲットではなくシンボリックリンクをコピーします


注:混乱を避けるために、Linuxビルド p7Zip (7Zipのポート)にもバイナリ7zがあることに注意してくださいどのdoesは、シンボリックリンクが指すファイルのアーカイブをサポートします(スイッチ-l)。ただし、Windows上の7Zipにはこのスイッチがありません。

13
sleske

2019年の時点で、7-ZipはWindowsでこの問題を解決しています。最新バージョンには、アーカイブにシンボリックリンクを含めるためのチェックボックスがあり、うまく機能します!

0
Michael Yaeger