Você pode fazer isso, para fornecer tar
uma lista de todos os arquivos, 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 os arquivos protTests
, apenas arquivará aqueles cujos nomes não começam .
(aqueles que não estão ocultos). O *
operador glob ignora arquivos cujos nomes começam .
por design. O comando também tem o problema de que, se protTests
houver muitos arquivos (mais de muitos milhares), ele protTests/*
poderá 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
--files-from
, esta é uma opção da gtar; portanto, dê um conselho, mencione melhor que isso é específico da gtar. O Find não tem primário-not
, esse é outro GNUism não portátil. Em geral, é uma má idéia usar uma chamada de localização separada. Isso pode causar problemas com caracteres engraçados no nome do arquivo e, definitivamente, apresenta um baixo desempenho, pois o find e o tar precisam verificar o sistema de arquivos. Esses problemas não se aplicam a programas como o star que usam libfind e, portanto, têm o código de busca incorporado.