Tar conteúdo do diretório sem pai e excluir subdiretórios / arquivos

2

Estrutura de diretórios simplificada:

/root/test
/root/test/dir1
/root/test/dir2
/root/test/dir3
/root/test/dir4

Eu quero tar / root / test para que quando eu extraio o arquivo eu recebo dir1 e dir2. Eu quero excluir dir3 e dir4 e, possivelmente, outros arquivos e subdiretórios, dependendo da aplicação específica do comando.

Eu percebo que há muitos exemplos de tar e snippets na rede, mas não consigo obter um exemplo específico ou combinar os disponíveis on-line para fazer isso funcionar como acima. Qualquer ajuda seria muito apreciada.

    
por Joe 28.03.2011 / 12:11

4 respostas

3

Acho que consegui fazer isso juntando o que foi dito aqui com alguma experimentação.

tar -cvf test.tar --exclude-from=exclude --directory="/root/test" .

Onde excluir é um arquivo com:

dir3
dir4
    
por 28.03.2011 / 12:53
3

Que tal

cd /
tar cvf /tmp/test.tar --exclude="./root/test/dir[34]" ./root/test
    
por 28.03.2011 / 12:21
2

se você tiver um número limitado de pastas que deseja tar, basta fazer

tar -C /root/test -cf arch.tar dir1 dir2



root@pinkpony:~# ls /root/test/
dir1  dir2  dir3
root@pinkpony:~# pwd
/root
root@pinkpony:~# tar -C /root/test -cf arch.tar dir1 dir2
root@pinkpony:~# tar tf arch.tar 
dir1/
dir2/

EDIT (torne o código incluído no comentário legível):

se você tiver regras complexas para criar a lista de diretórios que deseja tar, talvez queira iniciar o script:

root@pinkpony:~# (cd /root/test/ ; ls |grep -E '^dir(1|2)$' | xargs  tar cf /tmp/blah.tar )
root@pinkpony:~# tar tf /tmp/blah.tar 
dir1/
dir2/

você pode usar o que você precisar, em vez daquela coisa idiota, apenas um exemplo; xargs é a parte que eu quero apontar para sua atenção

    
por 28.03.2011 / 12:23
0

FWIW você também pode especificar um arquivo para lista exclui para uma lista mais longa de arquivos ou diretórios. É mais fácil do que ajustar uma longa linha de comando.

Confira mycrpt para um método de criptografia rápido e seguro também. Desculpe, um pouco OT.

    
por 28.03.2011 / 12:26