Предположение Вас имеет Ваше другое право материала USB (ehci/uhci, и т.д.):
Драйверы устройств-> поддержка HID-> USB поддержка HID-> USB Транспортный уровень HID
Для GNU TAR
:
--sort=ORDER
Specify the directory sorting order when reading directories.
ORDER may be one of the following:
`none'
No directory sorting is performed. This is the default.
`name'
Sort the directory entries on name. The operating system may
deliver directory entries in a more or less random order, and
sorting them makes archive creation reproducible.
`inode'
Sort the directory entries on inode number. Sorting
directories on inode number may reduce the amount of disk
seek operations when creating an archive for some file
systems.
Вы, вероятно, также захотите посмотреть - -Получение по порядку
.
tar
сам по себе не может этого сделать, поэтому его нужно создать из правильно упорядоченного списка. В принципе, вы можете использовать опцию tar
-T
, но нет способа указать, что имена файлов в этом списке должны быть NUL прерваны. Поэтому, если у вас есть какие-либо имена файлов с новыми строками в них (что разрешено), то это просто прервется.
Лучше использовать cpio
для генерации файлов, так как он принимает NUL-файлы, завершенные списком, и может генерировать tar-файлы.
Если бы ваша команда tar
была:
tar cvf /somedir/all.tar .
Тогда для сортировки по имени вам пришлось бы сделать (предполагая, что GNU find и cpio):
find . -type f -print0 | sort -z | \
cpio --create --null --format=ustar -O /somedir/all.tar
Недостатком является то, что подкаталоги располагаются между именами файлов. Вы можете делать трюки с find
s -printf0, указывая каталог и глубину информации и сортируя с sort -n
, но это также влияет на то, как файлы с числами сортируются внутри каталога.
Если вышеизложенное неудовлетворительно, вы, вероятно, могли бы использовать небольшую питоновскую программу, основанную на os.walk()
, чтобы сгенерировать нужный вам порядок с полным контролем (сначала глубина, на основе extenion и т.д.), но если вы пойдёте по этому маршруту, вы можете также бросить cpio
и записать файл tar
с помощью модуля python's tarfile
.
С zsh
, вместо:
pax -w dir
Используйте:
pax -dw dir dir/**/*(D)
То же самое можно сделать с последними версиями bash -O globstar -O dotglob
с:
pax -dw dir/**
Или с последними версиями FIGNORE='@(. |...)' ksh93 -o globstar
with:
pax -dw dir dir/**
pax
- стандартная команда для создания tar
файлов. Вывод идет в stdout. Глобусы оболочки сортируются по имени.
Если вы столкнулись с ошибкой Arg list too long, вы можете изменить ее на:
printf '%s\0' dir dir/**/*(D) | pax -0dw
(однако не все реализации pax
поддерживают -0
).