
Necesito almacenar una gran cantidad de archivos (> 100.000) en un archivo tar y me encontré con el error:/bin/sh: /bin/tar: no se puede ejecutar [lista de argumentos demasiado larga].
¿Existen límites con UNIX Solaris tar o GNU tar? ¿O es esto un problema de ZFS? Estoy ejecutando Solaris 11.3 con ZFS.
Respuesta1
Esta no es una limitación del alquitrán. Está excediendo el tamaño máximo de argumentos que se pueden pasar a un programa. Si la lista de nombres de archivos está disponible en un archivo, entonces puede usar -T
la opción GNU tar:
tar -c -f output.tar -T filelist.txt
Tar también puede recibir la lista de archivos de la entrada estándar utilizándola -
como nombre de archivo. Por ejemplo, si desea crear un archivo que contenga todos los archivos y subdirectorios de mydir
, puede pasar la salida de find
tar:
find mydir | tar -c -f output.tar -T -
Respuesta2
Como han dicho otros, el problema es (probablemente) la longitud del comando y no el tamaño del archivo. Deberías poder hacer
alquitrán cfarchivo tararchivo001 archivo002 … archivo100 alquitránarchivo tararchivo101 archivo102 … archivo200 alquitránarchivo tararchivo201 archivo202 … archivo300 ︙Alternativamente, haz
alquitrán cfarchivo tararchivo001para crear el archivo, y luego
alquitrán cfarchivo tar archivo002… archivo100 alquitránarchivo tararchivo101 archivo102 … archivo200 alquitránarchivo tararchivo201 archivo202 … archivo300 ︙(posiblemente con
xargs
) para agregarle.