Links simbólicos e 7zip

16

Estou tentando compactar uma pasta em um arquivo .7z. Esta pasta contém links simbólicos para algumas outras coisas fora da pasta (ambos os diretórios e arquivos).

Aparentemente o 7zip apenas arquiva o link em si que não é o que eu pretendia. Existe uma maneira de dizer ao 7zip que eu quero arquivar as coisas que ele liga, não o próprio link? (Isto é, se houver um nome de link simbólico foo que aponta para C:\stuff\foo , eu quero incluir o diretório C:\stuff\foo no repositório no lugar de foo, não um link simbólico de 0 bytes.))

Existe alguma solução razoável além de adicionar os arquivos e pastas em questão? Existem cerca de 10.000 arquivos referenciados através de links simbólicos, então adicioná-los individualmente levaria horas ... Talvez haja um programa que crie uma pasta de teste com os arquivos reais e passe para o 7zip. Ou apenas um arquivador que manipula melhor os links simbólicos.

Estou executando o Windows Vista. Todos os links são links simbólicos (por exemplo, criados com mklink link target e mklink /D link target ).

EDITAR:

dir saída do comando para um diretório de teste menor:

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

Criando um arquivo 7z com resultados de 7zip em real file.txt sendo incluído, mas test file.txt é adicionado como um arquivo de 0 byte, embora o arquivo vinculado exista e seja 50KB.

    
por Fire Lancer 08.04.2010 / 23:04

2 respostas

12

Apparently 7zip just archives the link it's self which is not what I intended. Is there a way to tell 7zip that I want it to archive the stuff that it links too, not the link its self

Não, aparentemente não (infelizmente). Na verdade, existe um relatório de bug no 7zip solicitando isso: link mas foi inaugurado em agosto de 2009 e não tocou desde: - /.

Failing that is there any reasonable around it, apart from adding the files and folders in question? Including the stuff through the symlink there's like 10 000 files, the large proportion of which are via symlinks so adding them all individually would take hours...

Bem, se você tem espaço suficiente (e tempo), você pode fazer uma cópia da pasta, substituindo os links simbólicos com seus alvos. Você pode, por exemplo use Robocopy e sua opção /sl :

/sl Copies the symbolic link instead of the target

Nota: Apenas para evitar confusões, note que a versão Linux do p7zip (uma porta de 7zip) também possui um binário 7z , o qual suporta o arquivamento do arquivo para o qual um link simbólico aponta (switch -l ). No entanto, 7zip no Windows não tem essa opção.

    
por 08.04.2010 / 23:48
-1

Se você estiver usando o Vista e acima, remova os links simbólicos e substitua-os por mklinks

mklink /D Directory FullPathToRealDirectory

Observe que o mklink é bastante poderoso e pode incluir links para compartilhamentos de rede e afins.

Como parece haver alguma confusão sobre isso, permita-me esclarecer. Estou assumindo que o OP está realmente falando sobre Junções, conforme ilustrado aqui link . O Mklink não faz junções. Faz verdadeiros links simbólicos e eu tentei eu mesmo e o 7zip os respeita perfeitamente. Além disso, você precisa ser administrador para criar links simbólicos 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

O 7zip irá arquivar GB, mas NÃO arquivará GB2. EDIT: Na verdade, mais testes mostram que o 7zip irá arquivar ambos os diretórios usando a versão 4.65. Então não tenho ideia do problema.

    
por 08.04.2010 / 23:34