Quero criar um arquivo tar em que todos os diretórios e arquivos sejam processados em ordem alfabética. Isso é para toda a hierarquia de diretórios que está sendo tarada, então começaria processando o primeiro diretório em ordem alfabética e, em seguida, subdiretórios lá em ordem alfabética, etc.
Admito, isso é meia novidade, meio leve otimização. Eu simplesmente não posso acreditar que não há uma maneira fácil de fazer isso. Eu devo estar esquecendo alguma coisa.
Respostas:
Slartibartfast está no caminho certo, mas o comportamento padrão do tar é descer para diretórios, portanto, você pode obter mais de uma cópia do mesmo arquivo incluída no arquivo tar gerado. Você pode verificar fazendo
tar tf file.tar | sort
A solução alternativa é incluir a opção --no-recursion no tar. Além disso, você poderá enviar nomes de arquivos estranhos usando a-print0
opção para localizar e, em seguida, usando a--null
opção para tar. O resultado final é assim:find paths -print0 | sort -z | tar cf tarfile.tar --no-recursion --null -T -
Você pode verificar a ordem no arquivo tar usando
tar tsf tarfile.tar
. Embora você provavelmente nunca precise das opções -print0, -z e --null, a menos que saiba que encontrará um nome de arquivo com uma nova linha incorporada, nunca tentei.fonte
A ordem dos arquivos no arquivo tar realmente não importa, pois quando os arquivos são extraídos, o sistema de arquivos não preservará a ordem.
Não há opção para isso, mas se você realmente quisesse, poderia fornecer ao tar uma lista de nomes de arquivos em ordem classificada, e isso criaria o arquivo tar com a ordem que você fornecer.
fonte
tar tf tarfile | sort
Supondo que você não tenha nenhum arquivo com novas linhas nos nomes:
Se isso não funcionar (nunca tentei, então não conheço - significa stdin para o argumento -T):
Depois, há a questão do porquê. Mas às vezes é mais fácil não perguntar.
fonte
Pax é uma espécie de sucessor do POSIX para cpio e tar e meio que funde os melhores aspectos de ambos. Ele grava arquivos tar (ustar) por padrão. Ele também oferece ampliação automática e solicitação de mídia e imprime um resumo quando terminar.
fonte
Como alternativa à resposta do @ CharlieHerron, se você estiver interessado apenas em preservar o conteúdo (arquivos, link simbólico) e metadados da pasta (por exemplo, permissão de pasta, mtime, etc.), convém filtrar as pastas da saída da
find
saída.fonte