tar command - pule os links simbólicos

9

Eu uso o comando tar como

tar -cvf protTests.tar protTests/*

para tar de todos os arquivos dentro da pasta, protTests . Mas isso inclui os links simbólicos dentro da pasta, o que não é desejado.

Existe uma opção de linha de comando que irá omitir todos os links simbólicos?

    
por Madhavan Kumar 01.09.2015 / 08:00

2 respostas

8

Você pode fazer isso para fornecer tar com uma lista de todos os arquivos dentro de protTests , exceto aqueles que são links simbólicos:

find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
  tar --null --files-from - -cvf protTests.tar

A propósito, seu comando existente:

tar -cvf protTests.tar protTests/*

não arquivará todos arquivos em protTests , arquivará apenas aqueles cujos nomes não começarem com . (aqueles que não estão ocultos). O operador * glob ignora arquivos cujos nomes começam com . por design. O comando também tem o problema de que, se protTests tiver muitos arquivos (mais que muitos milhares), então protTests/* pode se expandir para muitos argumentos para caber na linha de comando.

Um comando mais simples como esse não teria nenhum desses problemas:

tar -cvf protTests.tar protTests
    
por 01.09.2015 / 08:21
-2

Minha implementação de tar é o melhor método

star -cv -f out.tar -find protTests ! -type l
    
por 01.09.2015 / 10:25