tarselbst kann dies nicht, daher müssen Sie es aus einer korrekt geordneten Liste erstellen. Im Prinzip könnte man dann verwenden tar‚s -TOption, aber es gibt keine Möglichkeit, festzulegen , dass die Dateinamen in dieser Liste sollen beendet werden NUL. Wenn Sie also Dateinamen mit Zeilenumbrüchen haben (was zulässig ist), wird dies nur unterbrochen.
Eine bessere Option ist das cpioGenerieren der Dateien, da diese eine NUL-terminierte Liste von Dateinamen akzeptieren und TAR-Dateien generieren können.
Wenn Ihr tarBefehl wäre:
tar cvf /somedir/all.tar .
Damit dies nach Namen sortiert werden kann, müssten Sie Folgendes tun (unter der Annahme von GNU find und cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Dies hat jedoch den Nachteil, dass Unterverzeichnisse zwischen Dateinamen platziert werden. Sie können Tricks mit finds -printf0 ausführen, indem Sie die Verzeichnis- und Tiefeninformationen angeben und mit sortieren. Dies sort -nbeeinflusst jedoch auch, wie Dateien mit Nummern innerhalb eines Verzeichnisses sortiert werden.
Wenn das oben os.walk()Genannte nicht zufriedenstellend ist, können Sie wahrscheinlich ein kleines Python-Programm verwenden, das auf basiert , um die gewünschte Reihenfolge mit voller Kontrolle zu generieren (Tiefe zuerst, basierend auf Erweiterung usw.), aber wenn Sie diesen Weg gehen, können Sie das auch fallen lassen cpiound ausschreiben tarDatei mit Python- tarfileModul.