Lista de argumentos muito longa não é um erro específico de tar . É um erro ( E2BIG ) do execve (2) syscall (dado pelo kernel, que tem que colocar algumas limitações em execve para evitar estragar a memória). Portanto, seu shell (que fork -s, em seguida, execve -s o programa /bin/tar ) informa essa mensagem de erro.
Pode ser difícil aumentar esse limite (talvez alguns sysconf , eu esqueci os detalhes). Ou recompile seu kernel e aumente o ARG_MAX em seu include/uapi/linux/limits.h .
O GNU tar (1) aceita muitas opções interessantes (por favor, leia o manual página), em especial:
-T, --files-from=FILE
Get names to extract or create from FILE.
Portanto, colete os caminhos de arquivo a serem arquivados em algum arquivo (por exemplo, temporário) e, em seguida, passe-o com -T e você não terá limitações.
No entanto, o comando tar tem muitos recursos interessantes e você pode usá-los para ter um comando de tamanho razoável.
Veja também encontre (1) e xargs(1) . Considere também dar ou afio (como altenatives a tar ) ou rsync
Você pode usar o GNU cp (1) como cp -va sourcedir destdir