tar
di per sé non può farlo, quindi è necessario crearlo da un elenco ordinato correttamente. In linea di principio è quindi possibile utilizzare tar
l' -T
opzione, ma non è possibile specificare che i nomi dei file in tale elenco debbano essere chiusi NUL. Quindi, se hai nomi di file con nuove righe (che è consentito), questo si interromperà.
Un'opzione migliore è utilizzare cpio
per generare i file in quanto accetta un elenco di nomi di file terminato NUL e può generare file tar.
Se il tuo tar
comando fosse:
tar cvf /somedir/all.tar .
Quindi per ordinarlo in base al nome, dovresti fare (supponendo che GNU find e cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Questo ha lo svantaggio però che le sottodirectory sono inserite tra i nomi dei file. Puoi fare trucchi con find
s -printf0 specificando la directory e le informazioni sulla profondità e l'ordinamento, sort -n
ma ciò influenza anche il modo in cui i file con i numeri sono ordinati all'interno di una directory.
Se quanto sopra non è soddisfacente, potresti probabilmente utilizzare un piccolo programma Python basato su os.walk()
per generare l'ordinamento desiderato con il controllo completo (profondità prima, basata sull'estensione, ecc.), Ma se segui quel percorso potresti anche rilasciare cpio
e scrivere il tar
file con il tarfile
modulo di Python .