tar
chính nó không thể làm điều này, vì vậy bạn phải tạo nó từ một danh sách được sắp xếp chính xác. Về nguyên tắc, sau đó bạn có thể sử dụng tùy chọn tar
của mình -T
, nhưng không có cách nào để xác định rằng tên tệp trong danh sách đó phải được chấm dứt NUL. Vì vậy, nếu bạn có bất kỳ tên tệp nào có dòng mới trong đó (được cho phép) thì điều này sẽ bị hỏng.
Tùy chọn tốt hơn là sử dụng cpio
để tạo các tệp vì chấp nhận danh sách tên tệp đã kết thúc NUL và có thể tạo tệp tar.
Nếu tar
lệnh của bạn sẽ là:
tar cvf /somedir/all.tar .
Sau đó, để điều này được sắp xếp theo tên bạn sẽ phải làm (giả sử GNU find và cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Điều này có nhược điểm mặc dù các thư mục con được đặt ở giữa tên tệp. Bạn có thể thực hiện các thủ thuật với find
s -printf0 chỉ định thư mục và thông tin độ sâu và sắp xếp với sort -n
nhưng điều đó cũng ảnh hưởng đến cách các tệp có số được sắp xếp trong một thư mục.
Nếu những điều trên không thỏa đáng, bạn có thể sử dụng một chương trình python nhỏ dựa trên os.walk()
để tạo ra thứ tự bạn muốn với toàn quyền kiểm soát (độ sâu trước, dựa trên extenion, v.v.), nhưng nếu bạn đi theo con đường đó, bạn cũng có thể bỏ cpio
và viết ra tar
tập tin với tarfile
mô-đun của python .