tarele próprio não pode fazer isso, então você deve criá-lo a partir de uma lista ordenada corretamente. Em princípio, você poderia usar tara -Topção de, mas não há como especificar que os nomes de arquivos nessa lista sejam NUL terminados. Portanto, se você tiver algum nome de arquivo com novas linhas (o que é permitido), isso será interrompido.
Uma opção melhor é usar cpiopara gerar os arquivos, pois isso aceita uma lista de nomes de arquivos terminada em NUL e pode gerar arquivos tar.
Se seu tarcomando seria:
tar cvf /somedir/all.tar .
Então, para que isso seja classificado por nome, você teria que fazer (assumindo que GNU find e cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Isso tem a desvantagem, embora os subdiretórios sejam colocados entre os nomes de arquivos. Você pode fazer truques com finds -printf0 especificando o diretório e informações detalhadas e classificando, sort -nmas isso também influencia a maneira como os arquivos com números são classificados em um diretório.
Se o acima exposto não for satisfatório, você provavelmente poderá usar um pequeno programa python baseado em os.walk()para gerar a ordem que deseja com controle total (profundidade primeiro, com base na extensão etc.), mas se você seguir esse caminho, poderá também soltar cpioe escrever o tararquivo com o tarfilemódulo python .