Próbuję skompresować folder do archiwum .7z. Ten folder zawiera symboliczne linki do niektórych innych elementów poza folderem (zarówno katalogów, jak i plików).
Najwyraźniej 7zip archiwizuje sam link, co nie jest moim zamierzeniem. Czy istnieje sposób, aby powiedzieć 7zip, że chcę zarchiwizować rzeczy, do których prowadzi, a nie sam link? (To znaczy, jeśli istnieje nazwa dowiązania symbolicznegofoo
która wskazuje C:\stuff\foo
, chcę, aby zawierał C:\stuff\foo
katalog w archiwum zamiast foo, a nie 0-bajtowe dowiązanie symboliczne.)
Czy istnieje jakieś uzasadnione obejście oprócz dodawania danych plików i folderów? Istnieje około 10 000 plików przywoływanych za pomocą dowiązań symbolicznych, więc dodanie ich wszystkich osobno zajęłoby godziny… Może jest program, który tworzy folder pośredni z prawdziwymi plikami w nim, a następnie przekazuje go do 7zip. Lub tylko archiwizator, który lepiej obsługuje dowiązania symboliczne.
Korzystam z systemu Windows Vista. Wszystkie linki są symbolicznymi linkami (np. Utworzone za pomocąmklink link target
i mklink /D link target
).
EDYTOWAĆ:
dir
wynik polecenia dla mniejszego katalogu testowego:
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
Utworzenie tego archiwum 7z z włączeniem 7zip powoduje dodanie pliku, real file.txt
ale test file.txt
jest dodawany jako plik 0-bajtowy, chociaż plik z nim powiązany istnieje i ma rozmiar 50 KB.
źródło
Odpowiedzi:
Nie, najwyraźniej nie (niestety). W rzeczywistości istnieje raport o błędzie dotyczący 7zip z żądaniem: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481, ale został otwarty w sierpniu 2009 r. I nie został zmieniony od: - /.
Cóż, jeśli masz wystarczająco dużo miejsca (i czasu), możesz wykonać kopię folderu, zastępując dowiązania symboliczne ich celami. Możesz np. Użyć Robocopy i jego przełącznika
/sl
:Uwaga: Żeby uniknąć nieporozumień, zauważa, że budowa Linuksa p7zip (port 7zip) ma również binarny
7z
który robi wsparcie archiwizacji złożyć symboliczne dowiązanie (switch-l
). Jednak 7zip w systemie Windows nie ma tego przełącznika.źródło
-l
przełącznika. zip i gzip robią to również z ich konkretnymi poleceniami.Jeśli używasz Visty i nowszych wersji, usuń dowiązania symboliczne i zamień je na mklinks
Pamiętaj, że mklink jest dość potężny i może zawierać linki do udziałów sieciowych i tym podobne.
Ponieważ wydaje się, że jest w tym trochę zamieszania, pozwólcie, że wyjaśnię. Zakładam, że OP faktycznie mówi o skrzyżowaniach, jak pokazano tutaj http://en.wikipedia.org/wiki/NTFS_junction_point . Mklink nie wykonuje skrzyżowań . Tworzy PRAWDZIWE dowiązania symboliczne i sam spróbowałem, a 7zip szanuje je doskonale. Ponadto musisz być administratorem, aby utworzyć dowiązania symboliczne mklink.
7zip zarchiwizuje GB, ale NIE zarchiwizuje GB2. EDYCJA: Właściwie dalsze testy pokazują, że 7zip Zarchiwizuje oba katalogi przy użyciu wersji 4.65. Więc nie mam pojęcia, na czym polega problem.
źródło