Quiero crear un archivo tar donde todos los directorios y archivos se procesen en orden alfabético. Esto es para toda la jerarquía de directorios que se está bloqueando, por lo que comenzaría procesando el primer directorio alfabéticamente, y luego los subdirectorios allí alfabéticamente, etc. Miré a través de la página de manual y no puedo encontrar un interruptor para esto.
Debo admitir que esto es mitad novedad, mitad optimización leve. Simplemente no puedo creer que no haya una manera fácil de hacer esto. Debo estar perdiendo algo.
Respuestas:
Slartibartfast está en el camino correcto, pero el comportamiento predeterminado de tar es descender a directorios, por lo que puede obtener más de una copia del mismo archivo incluido en el archivo tar generado. Puede verificarlo haciendo
tar tf file.tar | sort
La solución alternativa es incluir la opción --no-recurssion to tar. Además, debe poder enviar nombres de archivos extraños utilizando la-print0
opción para buscar y luego la--null
opción para tar. El resultado final se ve así:find paths -print0 | sort -z | tar cf tarfile.tar --no-recursion --null -T -
Puede verificar el orden en el archivo tar mediante
tar tsf tarfile.tar
. Aunque probablemente nunca necesitará las opciones -print0, -z y --null a menos que sepa que va a encontrar un nombre de archivo con una nueva línea incrustada, nunca lo he probado.fuente
El orden de los archivos dentro del archivo tar realmente no importa, ya que cuando se extraen los archivos, el sistema de archivos no conservará el orden de todos modos.
No hay un cambio para esto, pero si realmente lo quisiera, podría proporcionar a tar una lista de nombres de archivos en orden ordenado, y crearía el archivo tar con el orden que le dé.
fuente
tar tf tarfile | sort
Suponiendo que no tiene ningún archivo con líneas nuevas en los nombres:
Si eso no funciona (nunca lo probé, así que no sé - significa stdin para el argumento -T):
Luego está la cuestión de por qué. Pero a veces es más fácil no preguntar.
fuente
Pax es el sucesor POSIX de cpio y tar y fusiona los mejores aspectos de ambos. Escribe archivos tar (ustar) por defecto. También realiza una expansión y solicitud automática de medios e imprime un resumen cuando está hecho.
fuente
Como alternativa a la respuesta de @ CharlieHerron, si solo está interesado en preservar el contenido (archivos, enlace simbólico) y los metadatos de la carpeta (p. Ej., Permiso de carpeta, mtime, etc.), es posible que desee filtrar las carpetas de la salida de
find
'.fuente