tar
selbst kann dies nicht, daher müssen Sie es aus einer korrekt geordneten Liste erstellen. Im Prinzip könnte man dann verwenden tar
‚s -T
Option, 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 cpio
Generieren der Dateien, da diese eine NUL-terminierte Liste von Dateinamen akzeptieren und TAR-Dateien generieren können.
Wenn Ihr tar
Befehl 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 find
s -printf0 ausführen, indem Sie die Verzeichnis- und Tiefeninformationen angeben und mit sortieren. Dies sort -n
beeinflusst 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 cpio
und ausschreiben tar
Datei mit Python- tarfile
Modul.