Estou tentando compactar uma pasta em um arquivo .7z. Esta pasta contém links simbólicos para outras coisas fora da pasta (diretórios e arquivos).
Aparentemente, 7zip apenas arquiva o link em si, o que não é o que eu pretendia. Existe uma maneira de dizer ao 7zip que eu quero que ele arquive o material ao qual vincula, não o link em si? (Ou seja, se houver um nome de link simbólico foo
que aponte para C:\stuff\foo
, quero que ele inclua o C:\stuff\foo
diretório no arquivo no lugar de foo, não um link simbólico de 0 byte.)
Existe alguma solução razoável além de adicionar os arquivos e pastas em questão? Existem cerca de 10.000 arquivos referenciados por links simbólicos, portanto, adicioná-los todos individualmente levaria horas ... Talvez exista um programa que crie uma pasta temporária com os arquivos reais e depois passe para o 7zip. Ou apenas um arquivador que lida melhor com links simbólicos.
Estou executando o Windows Vista. Todos os links são simbólicos (por exemplo, criados com mklink link target
e mklink /D link target
).
EDITAR:
dir
saída de 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
A criação de um arquivo 7z com o 7zip resulta na real file.txt
inclusão, mas test file.txt
é adicionado como um arquivo de 0 byte, embora o arquivo vinculado a ele exista e seja de 50 KB.
fonte
Respostas:
Não, aparentemente não (infelizmente). Na verdade, existe um relatório de bug no 7zip solicitando o seguinte: http://sourceforge.net/tracker/?func=detail&aid=2846755&group_id=14481&atid=114481, mas foi aberto em agosto de 2009 e não foi tocado desde: - /.
Bem, se você tiver espaço (e tempo) suficiente, poderá fazer uma cópia da pasta, substituindo os links simbólicos por seus destinos. Você pode, por exemplo, usar Robocopy e seu switch
/sl
:Nota: Só para evitar confusão, nota que a compilação Linux de p7zip (uma porta de 7zip) também tem um binário
7z
que faz suporte arquivar o arquivo de um link simbólico aponta (interruptor-l
). No entanto, o 7zip no Windows não possui essa opção.fonte
-l
switcher. zip e gzip também fazem com seus comandos específicos.Se você estiver usando o Vista e superior, remova os links simbólicos e substitua-os por mklinks
Observe que o mklink é bastante poderoso e pode incluir links para compartilhamentos de rede e similares.
Como parece haver alguma confusão sobre isso, deixe-me esclarecer. Suponho que o OP esteja realmente falando sobre junções, como ilustrado aqui http://en.wikipedia.org/wiki/NTFS_junction_point . O Mklink não faz junções . Faz TRUE links simbólicos e eu tentei por mim mesmo e o 7zip os respeita perfeitamente. Além disso, você precisa ser administrador para criar links simbólicos do mklink.
O 7zip arquivará GB, mas NÃO arquivará GB2. EDIT: Na verdade, testes adicionais mostram que o 7zip arquivará os dois diretórios usando a versão 4.65. Portanto, não tenho idéia de qual é o problema.
fonte