Ich versuche, einen Ordner in ein .7z-Archiv zu komprimieren. Dieser Ordner enthält symbolische Links zu anderen Dingen außerhalb des Ordners (sowohl Verzeichnisse als auch Dateien).
Anscheinend archiviert 7zip nur den Link selbst, was nicht meine Absicht ist. Gibt es eine Möglichkeit, 7zip mitzuteilen, dass es die Inhalte archivieren soll, auf die es verweist, und nicht den Link selbst? (Das heißt, wenn es einen Symlink-Namen gibt, foo
der darauf verweist C:\stuff\foo
, möchte ich, dass das C:\stuff\foo
Verzeichnis anstelle von foo in das Archiv aufgenommen wird und kein 0-Byte-Symlink.)
Gibt es eine vernünftige Problemumgehung außer dem Hinzufügen der fraglichen Dateien und Ordner? Es gibt ungefähr 10.000 Dateien, auf die über Symlinks verwiesen wird. Das Hinzufügen einzelner Dateien würde also Stunden dauern. Vielleicht gibt es ein Programm, das einen Staging-Ordner mit den tatsächlichen Dateien erstellt und diesen dann an 7zip weiterleitet. Oder nur ein Archivierer, der Symlinks besser handhabt.
Ich verwende Windows Vista. Alle Links sind symbolische Links (zB erstellt mit mklink link target
und mklink /D link target
).
BEARBEITEN:
dir
Befehlsausgabe für ein kleineres Testverzeichnis:
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
Das Erstellen eines 7z-Archivs mit 7zip führt real file.txt
dazu, dass es eingeschlossen wird, es test file.txt
wird jedoch als 0-Byte-Datei hinzugefügt, obwohl die verknüpfte Datei existiert und 50 KB groß ist.
quelle
Antworten:
Nein, anscheinend nicht (leider). Es gibt tatsächlich einen Fehlerbericht zu 7zip, der dies anfordert: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481, der jedoch im August 2009 geöffnet und seitdem nicht mehr aufgerufen wurde: - /.
Wenn Sie genügend Speicherplatz (und Zeit) haben, können Sie eine Kopie des Ordners erstellen und die Symlinks durch ihre Ziele ersetzen. Sie können zB Robocopy und seinen Schalter verwenden
/sl
:Hinweis: Nur um Verwirrung zu vermeiden, beachten Sie, dass die Linux - Version von p7zip (ein Port von 7 - Zip) auch eine binäre hat ,
7z
die hat Unterstützung für die Dateiarchivierung ein symbolischer Link verweist auf (Schalter-l
). 7zip unter Windows verfügt jedoch nicht über diesen Schalter.quelle
-l
Switcher tut . zip und gzip tun dies auch mit ihren spezifischen Befehlen.Wenn Sie Vista oder höher verwenden, entfernen Sie die Symlinks und ersetzen Sie sie durch mklinks
Beachten Sie, dass mklink ziemlich leistungsfähig ist und Links zu Netzwerkfreigaben und Ähnlichem enthalten kann.
Da diesbezüglich einige Verwirrung zu herrschen scheint, gestatten Sie mir, dies zu klären. Ich gehe davon aus, dass es sich im OP tatsächlich um Junctions handelt, wie hier dargestellt: http://en.wikipedia.org/wiki/NTFS_junction_point . Mklink macht keine Abzweigungen . Es macht TRUE symbolische Links und ich habe es selbst ausprobiert und 7zip respektiert sie perfekt. Außerdem müssen Sie Administrator sein, um symbolische Links für mklink zu erstellen.
7zip archiviert GB, aber NICHT GB2. BEARBEITEN: Weitere Tests zeigen, dass 7zip beide Verzeichnisse mit Version 4.65 archiviert. Ich habe also keine Ahnung, wo das Problem liegt.
quelle