Я хочу создать tar-файл, в котором все каталоги и файлы будут обрабатываться в алфавитном порядке. Это относится ко всей иерархии каталогов, которая настраивается, поэтому она будет начинаться с обработки первого каталога в алфавитном порядке, а затем в подкаталогах в алфавитном порядке и т. Д. Я просмотрел справочную страницу и не могу найти переключатель для этого.
Признаюсь, это наполовину новинка, наполовину небольшая оптимизация. Я просто не могу поверить, что не существует простого способа сделать это. Я должен что-то упустить.
Ответы:
Slartibartfast находится на правильном пути, но поведение tar по умолчанию сводится к каталогам, поэтому вы можете получить более одной копии одного и того же файла, включенного в созданный файл tar. Вы можете проверить, выполнив
tar tf file.tar | sort
Обходной путь - включить опцию --no-recursion в tar. Кроме того, вы должны иметь возможность отправлять странные имена файлов, используя-print0
опцию для поиска, затем используя--null
опцию для tar. Конечный результат выглядит так:find paths -print0 | sort -z | tar cf tarfile.tar --no-recursion --null -T -
Вы можете проверить порядок в файле tar с помощью
tar tsf tarfile.tar
. Хотя вам, вероятно, никогда не понадобятся опции -print0, -z и --null, если вы не знаете, что встретите имя файла со встроенным в него символом новой строки, я никогда не пробовал.источник
Порядок файлов в файле tar на самом деле не имеет значения, так как при извлечении файлов файловая система все равно не сохранит порядок.
Переключателя для этого нет, но если вы действительно этого хотите, вы можете предоставить tar со списком имен файлов в отсортированном порядке, и он создаст файл tar в указанном вами порядке.
источник
tar tf tarfile | sort
Предполагая, что у вас нет файлов с символами новой строки в именах:
Если это не сработает (никогда не пробовал, поэтому я не знаю - означает stdin для аргумента -T):
Тогда возникает вопрос, почему. Но иногда легче не спрашивать.
источник
Pax - своего рода преемник POSIX для cpio и tar, и он объединяет лучшие аспекты обоих. По умолчанию записывает архивы tar (ustar). Он также выполняет автоматическое заполнение и запрос для мультимедиа и печатает резюме, когда это сделано.
источник
В качестве альтернативы ответу @ CharlieHerron, если вас интересует только сохранение содержимого (файлы, символическая ссылка) и метаданных папки (например, разрешение папки, mtime и т. Д.), Вы можете отфильтровать папки из
find
выходных данных.источник