tarlui-même ne peut pas le faire, vous devez donc le créer à partir d'une liste correctement ordonnée. En principe, vous pouvez alors utiliser tarl' -Toption de, mais il n'y a aucun moyen de spécifier que les noms de fichiers de cette liste doivent se terminer par NUL. Donc, si vous avez des noms de fichiers contenant des retours à la ligne (ce qui est autorisé), cela se cassera.
Une meilleure option consiste à utiliser cpiopour générer les fichiers car elle accepte une liste de noms de fichiers terminée par NUL et peut générer des fichiers tar.
Si votre tarcommande serait:
tar cvf /somedir/all.tar .
Ensuite, pour que cela soit trié par nom, vous devez faire (en supposant que GNU find et cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Cela présente cependant l'inconvénient que les sous-répertoires sont placés entre les noms de fichiers. Vous pouvez effectuer des astuces avec finds -printf0 en spécifiant le répertoire et les informations détaillées et le tri avec sort -nmais cela influence également la façon dont les fichiers avec des numéros sont triés dans un répertoire.
Si ce qui précède n'est pas satisfaisant, vous pourriez probablement utiliser un petit programme python basé sur os.walk()pour générer l'ordre que vous souhaitez avec un contrôle total (profondeur d'abord, basé sur l'extension, etc.), mais si vous suivez cette voie, vous pouvez aussi bien laisser tomber cpioet écrire le tarfichier avec le tarfilemodule de python .