Si tarutiliza un directorio de forma recursiva, solo utiliza el orden de los sistemas operativos readdir.
Pero en algunos casos es bueno tar los archivos ordenados.
¿Cuál es una buena manera de tar un directorio ordenado alfabéticamente?
Tenga en cuenta que, a los fines de esta pregunta, gnu-tar en un sistema Linux típico está bien.

Respuestas:
Para un GNU
tar:Probablemente también quieras mirar
--preserve-order.fuente
--sortse introdujo en la versión tar 1.28.--preserve-orderno es relevante para esta pregunta.tar: Exiting with failure status due to previous errorserrores. @mhsmithCon
zsh, en lugar de:Utilizar:
Puede hacer lo mismo con versiones recientes de
bash -O globstar -O dotglobwith:O versiones recientes de
FIGNORE='@(.|..)' ksh93 -o globstarcon:paxes el comando estándar para creartararchivos. La salida va a stdout. Los globos de concha se ordenan por nombre.Si se encuentra con un error de lista Arg demasiado largo , puede cambiar a:
( aunque no todas las
paximplementaciones son compatibles-0).fuente
taren sí mismo no puede hacer esto, por lo que debe crearlo a partir de una lista ordenada correctamente. En principio, podría usartarla-Topció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
cpiopara generar los archivos, ya que acepta una lista de nombres de archivo terminados en NUL y puede generar archivos tar.Si su
tarcomando fuera:Luego, para que esto se ordene por nombre, debe hacer (suponiendo que GNU find y cpio):
Sin embargo, esto tiene la desventaja de que los subdirectorios se colocan entre los nombres de archivo. Puede hacer trucos con
finds -printf0 especificando el directorio y la información de profundidad y ordenando,sort -npero 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 abandonarcpioy escribir eltararchivo con eltarfilemódulo de Python .fuente