Создать архив tar со сжатием xz?


3

Я хотел бы создать тарбол с помощью инструмента сжатия xz. Согласно Google, по состоянию на 10.10 есть недокументированный ключ «--xz» для tar, но я не могу заставить его работать. В Linux есть ключ "-J", который допускает сжатие xz, но не поддерживается напрямую в OS X.

Страница man для tar ссылается на сжатие xz, но не показывает рабочий пример того, как его использовать. Все мои другие поиски приводят к чему-то похожему на:

    tar cf - some_dir | xz -1 > some_dir.txz

Однако распаковка этого из командной строки менее интуитивна и требует xz для обработки распаковки перед передачей файла в tar.

Итак, каково «современное состояние» в использовании сжатия xz непосредственно из tar?

Ответы:


5

Глядя на исходный код для libarchive пакет из Apple с открытым исходным кодом для OS X 10.8.5, 10.9, 10.10 и macOS 10.12.3, из которых содержит исходный код за bsdtar , включает в себя возможность использования XZ сжатие непосредственно в tar, однако это не было реализовано во время компиляции до OS X 10.9.0 и позже. Хотя страница руководства bsdtar.1 не показывает -J, --xz опции хотя это в bsdtar.c исходный код ,

Чтобы создать xz сжатый tar архив в OS X 10.9 или позже использует следующие примеры синтаксиса:

tar -cJf filename.tar.xz /path/to/folder_or_file ...

Или же:

tar --xz -cf filename.tar.xz /path/to/folder_or_file ...

Пример:

tar -cJf Documents.tar.xz "$HOME/Documents"

Или же:

tar --xz -cf Documents.tar.xz "$HOME/Documents"

Я также проверил Documents.tar.xz файл после того, как он был создан в редакторе Hex, и у него действительно был правильный заголовок, который включал ожидаемый 7zXZ часть подписи.


Фантастика. Я полагаю, что это научило меня НЕ доверять страницам руководства, поскольку ключ -J не указан (в моей версии 10.11.6). Существует ли механизм, предоставляемый через tar для увеличения количества потоков, используемых xz для сжатия? Ближайшее, что я могу найти, - это использование XZ_OPT для передачи опций, но он не работает, предположительно, потому что tar имеет собственную внутреннюю реализацию xz и не вызывает отдельную программу xz. Чтобы использовать потоки, я вернулся к использованию каналов, RE: tar -cv / path / to | xz -T0 & gt; tarball.txz
Chuck Remes
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.