
Preciso armazenar um grande número de arquivos (> 100.000) em um arquivo tar e encontrei o erro:/bin/sh: /bin/tar: não é possível executar [lista de argumentos muito longa].
Existem limites com o tar UNIX Solaris ou o tar GNU? Ou isso é um problema do ZFS? Estou executando o Solaris 11.3 com ZFS.
Responder1
Esta não é uma limitação do tar. Você está excedendo o tamanho máximo de argumentos que podem ser passados para um programa. Se a lista de nomes de arquivos estiver disponível em um arquivo, você poderá usar a opção GNU tar -T
:
tar -c -f output.tar -T filelist.txt
Tar também pode receber a lista de arquivos da entrada padrão usando -
como nome do arquivo. Por exemplo, se você deseja criar um arquivo contendo todos os arquivos e subdiretórios de mydir
, você pode passar a saída de find
para tar:
find mydir | tar -c -f output.tar -T -
Responder2
Como já foi dito, o problema é (provavelmente) o comprimento do comando e não o tamanho do arquivo. Você deveria ser capaz de fazer
alcatrão cfarquivo tarifárioarquivo001 arquivo002… arquivo100 alcatrãoarquivo tarifárioarquivo101 arquivo102… arquivo200 alcatrãoarquivo tarifárioarquivo201 arquivo202… arquivo300 ︙Alternativamente, faça
alcatrão cfarquivo tarifárioarquivo001para criar o arquivo e, em seguida,
alcatrão cfarquivo tarifário arquivo002… arquivo100 alcatrãoarquivo tarifárioarquivo101 arquivo102… arquivo200 alcatrãoarquivo tarifárioarquivo201 arquivo202… arquivo300 ︙(possivelmente com
xargs
) para adicionar a ele.