Como eu faço os diretórios em um arquivo zip em relação ao diretório de destino em vez do meu diretório de trabalho?

13

Estou chamando o comando zip de um script no qual não posso alterar o diretório. Eu preciso fazer um arquivo zip do material em data/kit123/ do diretório em que os dados residem, mas quero que o conteúdo do zip seja apenas o conteúdo de kit123 , com caminhos relativos a kit123 .

Esta é a estrutura de diretórios

myworkingdir
    data
        kit123
            kitpart1
                file.xcf
                anotherfile.xcf
            kitpart2
                ...
        kit124
            ...

Meu script é executado em myworkingdir e não pode mudar de diretório.

Se eu ligar

zip -r kit123.zip data/kit123

então a estrutura no arquivo zip será

data
    kit123
        kitpart1
            file.xcf
            anotherfile.xcf
        kitpart2

mas eu quero que seja

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

Existe uma opção de zip que eu possa usar para conseguir isso? Parece estranho que isso deva depender do meu diretório de trabalho

Eu sei que não é -j. aquele destrói a estrutura dentro do kit123

    
por Nathan 12.11.2012 / 05:25

1 resposta

8

Como você nota nos comentários, agora você sabe como alterar o diretório com seu script, explicarei a situação com o zip em relação aos caminhos relativos.

É provavelmente mais fácil abrir o terminal e cd to kit123 ; você tem que fazer o diretório de destino seu diretório de trabalho - você não pode executar o comando a partir da base do seu diretório home ou ele irá pegar todos os caminhos de /home/$USER/.. Se você usar a opção -j , ele irá remover Todos os caminhos, como não há realmente um equivalente da opção de alcatrão --strip com o qual diferentes níveis de remoção de caminho podem ser especificados.

Então, por favor, vá para o seu diretório de destino ( kit123 ) e digite:

zip -r kit123.zip *

Isso recursivamente ( -r ) preservará todos os arquivos ( * ) e diretórios de arquivos no diretório atual ( kit123 ) e os caminhos relativos ( -p ) serão preservados automaticamente, a menos que -j opção está presente, a estrutura de diretório será como você desejou. Kit123 e subpastas ( kitpart1 ) com seus próprios arquivos estarão presentes:

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

Você pode verificar o conteúdo do arquivo zip com unzip -l zipfile.zip .

Para mais informações sobre as outras opções disponíveis para zip , consulte man zip e o Manpage do Ubuntu online .

    
por user76204 12.11.2012 / 13:23