Estou mantendo um sistema legado cygwin (com o GNU tar v1.21) e um sistema Solaris 9 legado. A configuração do sistema Solaris 9 é fixa e não pode ser atualizada (por exemplo, não é possível instalar o gnu tar para Solaris).
Estou tentando criar um tarball no sistema cygwin que pode ser extraído no sistema Solaris 9, mas infelizmente a estrutura de diretório (que também é fixa e não pode ser renomeada), além de nomes de arquivos excederem 100 caracteres e eu corri para o Grandes guerras de alcatrão do último milênio. Há uma grande base de usuários (conservadora) no sistema Solaris, portanto, uma solução que usa o Solaris tar é a preferida.
Aqui estão os erros que estou tendo.
Criando o tar no cygwin:
$ tar -cf dir.tar dir
ou
$ tar -c --posix -f dir.tar dir
Dá o seguinte no Solaris:
$ tar -xif dir.tar
tar: directory checksum errors
E os nomes dos arquivos no diretório são truncados. (ou seja, ignorar os erros de checksum não ajuda)
Como eu crio um tarball com caminhos longos usando o GNU tar que pode ser extraído pelo Solaris tar?
Editar # 2: Não é possível usar o Schily Tar (estrela)
Parece que Joerg Schilling conseguiu emular o formato tar do Solaris 7/8/9 e fornece uma opção suntar
para criar um tarball do Solaris usando star .
Infelizmente star
não está disponível no cygwin. : (
Editar # 1: Usando --format = posix dá erros ao extrair
Erros ao extrair --format = posix gnu tarballs usando pax no Solaris 9
No cygwin:
$ ls example/this_is_a_path_name_greater_than_one_hundred_characters/when_combined_with_this_file_name_which_is_also_rather_long.txt | wc -m
128
$ tar -c --format=posix -f example.tar example
No Solaris:
$ pax -r -f example.tar
pax: ./PaxHeaders.4440/example : Unknown filetype
pax: example/PaxHeaders.4440/this_is_a_path_name_greater_than_one_hundred_characters : Unknown filetype
pax: example/this_is_a_path_name_greater_than_one_hundred_characters/PaxHeaders.4440/when_combined_with_t : Unknown filetype
Erros semelhantes são fornecidos ao extrair usando o Solaris Tar.