tar
en sí mismo no puede hacer esto, por lo que debe crearlo a partir de una lista ordenada correctamente. En principio, podría usar tar
la -T
opción 's' , pero no hay forma de especificar que los nombres de archivo en esa lista se terminen con NUL. Entonces, si tiene nombres de archivo con nuevas líneas (lo que está permitido), esto simplemente se romperá.
Una mejor opción es usarlo cpio
para generar los archivos, ya que acepta una lista de nombres de archivo terminados en NUL y puede generar archivos tar.
Si su tar
comando fuera:
tar cvf /somedir/all.tar .
Luego, para que esto se ordene por nombre, debe hacer (suponiendo que GNU find y cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Sin embargo, esto tiene la desventaja de que los subdirectorios se colocan entre los nombres de archivo. Puede hacer trucos con find
s -printf0 especificando el directorio y la información de profundidad y ordenando, sort -n
pero eso también influye en cómo se ordenan los archivos con números dentro de un directorio.
Si lo anterior no es satisfactorio, probablemente podría usar un pequeño programa basado en Python os.walk()
para generar el orden que desee con control total (profundidad primero, basada en la extensión, etc.), pero si sigue esa ruta, también podría abandonar cpio
y escribir el tar
archivo con el tarfile
módulo de Python .