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


18

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

どうやら7zipはリンク自体をアーカイブするだけで、私が意図したものではありません。7zipに、リンク自体ではなく、リンク先のものをアーカイブするように指示する方法はありますか?(つまり、をfoo指すシンボリックリンク名があれば、0バイトのシンボリックリンクではなく、fooの代わりにディレクトリをアーカイブにC:\stuff\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

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


どのOSを使用していますか?
チャールズガージェント

2
「窓」タグをdoesntの、よく窓を使用してそのイムを示唆...
火槍

1
さて、どのバージョンのウィンドウを使用していますか?
チャールズガージェント

@Fire Lancer:一般に、テキスト内のタグから情報を繰り返すことをお勧めします。読みやすく、誰もがタグを見るわけではありません(下にあるため)。さらに、タグには誤解が生じる可能性があります。たとえば、私はLinuxを使用しているかもしれませんが、Windowsと相互運用したいので、質問に「windows」というタグを付けます。
sleske

1
まあ、7zは<SYMLINKD>および<JUNCTION>ディレクトリをアーカイブするが、<SYMLINK>ファイルはアーカイブしないように見えるので、すべてのファイルをディレクトリに
忍び込ませ

回答:


13

どうやら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をのポート)も、バイナリていないサポートがシンボリックリンク(スイッチにファイルをアーカイブします)。ただし、Windowsの7zipにはこのスイッチはありません。7z-l


これは承認された回答であるため、実際の7zipが-lスイッチャーによって実行されることを指摘したいと思います。zipとgzipも特定のコマンドを使用します。
m3nda

@ erm3ndaこのスイッチはどこにありますか?参照を提供してください。
マーク

linux.die.net/man/1/7zオプションlがあり、同じ文字のスイッチもあります。このオプションは、Windowsバージョンのソフトウェアには存在しないことに注意してください。
m3nda

@ erm3nda:はい。ただし、これは7zipのポートであるp7zipです。それを指摘してくれてありがとう。回答を更新しました。
sleske

こちらこそありがとう。Windowsにこの機能がないとは信じられません。Windowsのシンボリックリンクがかなり異なっていても、なぜそれを機能させるのが難しいのかを理解しないでください。
m3nda

-1

Vista以降を使用している場合は、シンボリックリンクを削除し、mklinksに置き換えます

mklink /D Directory FullPathToRealDirectory

mklinkは非常に強力であり、ネットワーク共有などへのリンクを含めることができることに注意してください。

これには多少の混乱があるように思われるので、はっきりさせてください。ここではhttp://en.wikipedia.org/wiki/NTFS_junction_pointに示すように、OPが実際にジャンクションについて話していると想定しています。Mklinkはジャンクションを作成しませ。TRUEシンボリックリンクを作成し、自分で試してみましたが、7zipはそれらを完全に尊重します。また、mklinkシンボリックリンクを作成するには、管理者である必要があります。

 Directory of C:\temp\t

04/08/2010  04:50 PM    <DIR>          .
04/08/2010  04:50 PM    <DIR>          ..
04/08/2010  04:31 PM    <SYMLINKD>     GB [c:\users\testuser]    <-- created by mklink
04/08/2010  04:50 PM    <JUNCTION>     GB2 [\??\c:\users\testuser] <-- created by junction
04/08/2010  04:29 PM                 8 test.txt

7zipはGBをアーカイブしますが、GB2はアーカイブしません。編集:実際にさらにテストすると、7zipはバージョン4.65を使用して両方のディレクトリをアーカイブします。だから私は問題が何であるか見当もつかない。


1
すべてのorigシンボリックリンクがそもそもMicrosoft APIとmklikで作成されていることを考えると、これは同じものを作り直す以外に何を解決しますか?
ファイヤーランサー

2
-1それはどのように問題を解決しますか?シンボリックリンクの作成方法を説明するだけです。
-sleske

@hova:はい、それはすべて真実です(ただし、MSは通常シンボリックリンクを「シンボリックリンク」と呼びますが、ジャンクションは「シンボリックリンク」と呼ばれることはありません)。しかし、これは質問にどのように関係していますか?
sleske

7zipアーカイブSYMLINKD(mklink)ディレクトリ!
ホバ

1
Windows 7で7zip v15.14(64ビット)を使用していくつかのテストを行ったところ、7zipがディレクトリシンボリックリンクに従うようになりましたが、ファイルシンボリックリンク用の空のファイルのみを保存しているようです-これはあまり役に立ちません。
ビグニケ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.