17

Я пытаюсь сжать папку в архив .7z. Эта папка содержит символические ссылки на некоторые другие вещи вне папки (как каталоги, так и файлы).

Видимо 7zip просто архивирует саму ссылку, а это не то, что я намеревался. Есть ли способ сообщить 7zip, что я хочу, чтобы он архивировал материал, на который он ссылается, а не саму ссылку? (То есть, если есть имя символической ссылки foo которое указывает на C:\stuff\foo , я хочу, чтобы оно включало каталог C:\stuff\foo в архив вместо foo, а не 0-байтовую символическую ссылку.))

Есть ли разумный обходной путь, кроме добавления файлов и папок, о которых идет речь? Существует около 10000 файлов, на которые ссылаются через символические ссылки, поэтому добавление их всех по отдельности займет несколько часов ... Может быть, есть программа, которая создает промежуточную папку с реальными файлами в ней, а затем передает ее в 7zip. Или просто архиватор, который лучше обрабатывает символические ссылки.

Я использую Windows Vista. Все ссылки являются символическими ссылками (например, созданы с помощью mklink link target mklink и цели ссылки 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 КБ.

2 ответа2

12

Видимо 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 не имеет этого переключателя.

-1

Если вы используете Vista и выше, удалите символические ссылки и замените их на mklinks

mklink /D Directory FullPathToRealDirectory

Обратите внимание, что mklink довольно мощный и может включать ссылки на сетевые ресурсы и тому подобное.

Так как в этом есть некоторая путаница, позвольте мне уточнить. Я предполагаю, что ОП на самом деле говорит о соединениях, как показано здесь http://en.wikipedia.org/wiki/NTFS_junction_point. Mklink не делает соединения. Это делает ИСТИННЫЕ символические ссылки, и я попробовал это сам, и 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 будет архивировать ГБ, но НЕ будет архивировать ГБ2. РЕДАКТИРОВАТЬ: На самом деле дальнейшее тестирование показывает, что 7zip будет архивировать обе директории, используя версию 4.65. Так что я понятия не имею, в чем проблема.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .