Я пытаюсь сжать папку в архив.7z. Эта папка содержит символьные ссылки на некоторый другой материал вне папки (и каталоги и файлы).
По-видимому, 7zip просто архивирует саму ссылку, которая не является тем, что я предназначил. Существует ли способ сказать 7zip, что я хочу, чтобы он заархивировал материал, который он связывает с, не сама ссылка? (Это - то, если существует имя символьной ссылки foo
который указывает на C:\stuff\foo
, Я хочу, чтобы это включало C:\stuff\foo
каталог в архиве вместо нечто, не 0-байтовая символьная ссылка.))
Есть ли какое-либо разумное обходное решение кроме добавления файлов и рассматриваемых папок? Существует приблизительно 10 000 файлов, на которые ссылаются через символьные ссылки, настолько добавляющие их всех, индивидуально занял бы часы …, Возможно, существует программа, которая создает папку подготовки с реальными файлами в нем и затем передает это 7zip. Или просто archiver, который действительно обрабатывает символьные ссылки лучше.
Я выполняю 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
добавляется как 0-байтовый файл, хотя файл, связанный с, действительно существует и составляет 50 КБ.
По-видимому, 7zip просто архивирует ссылку, которая это сам, который не является тем, что я предназначил. Есть ли способ сказать 7zip, что я хочу, чтобы он заархивировал материал, который он связывает также, не ссылка сам
Нет, по-видимому, не (к сожалению). Существует на самом деле отчет об ошибках на 7zip запрос этого: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481, но это было открыто в августе 2009 и не затронуло с тех пор :-/.
Сбой, который является там кем-либо разумным вокруг этого кроме добавления файлов и рассматриваемых папок? Включая материал через символьную ссылку там похож на 10 000 файлов, значительной долей которых через символьные ссылки, настолько добавляющие их всех индивидуально, занял бы часы...
Ну, если у Вас есть достаточно пространства (и время), можно сделать копию папки, заменив символьные ссылки их целями. Вы можете, например, использовать Robocopy и его переключатель /sl
:
/sl Копирует символьную ссылку вместо цели
Примечание: Только для предотвращения беспорядка обратите внимание, что сборка Linux p7zip (порт 7zip) также имеет двоичный файл 7z
который действительно поддерживает архивацию файла, на который указывает символьная ссылка (переключатель -l
). Однако 7zip в Windows не имеет этого переключателя.
Если Вы используете Vista и выше, удаляете символьные ссылки и заменяете их mklinks
mklink /D Directory FullPathToRealDirectory
Обратите внимание, что mklink довольно мощен и может включать ссылки на сетевые ресурсы и т.п..
С тех пор, кажется, существует некоторый беспорядок на этом, позволяет мне разъясняться. Я предполагаю, что OP на самом деле говорит о Соединениях, как проиллюстрировано здесь http://en.wikipedia.org/wiki/NTFS_junction_point. 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 заархивирует ГБ, но он НЕ заархивирует GB2.Править: На самом деле дальнейшее тестирование показывает, что 7zip заархивирует оба каталога с помощью версии 4.65. Таким образом, у меня нет подсказки, какова проблема.