Я пытаюсь создать сжатый архив .tar.xz
в одной команде. Каков конкретный синтаксис для этого?
Я пробовал tar cf - file | xz file.tar.xz
, но это не работает.
Я пытаюсь создать сжатый архив .tar.xz
в одной команде. Каков конкретный синтаксис для этого?
Я пробовал tar cf - file | xz file.tar.xz
, но это не работает.
Используйте параметр сжатия -J
для xz
. И помните man tar
:)
tar cfJ <archive.tar.xz> <files>
Изменить 2015-08-10:
Если вы передаете аргументы tar
с тире (например: tar -cf
в отличие от tar cf
), , то параметр -f
должен быть последним, так как он указывает имя файла (благодаря @ABB для указания этого!). В этом случае команда выглядит так:
tar -cJf <archive.tar.xz> <files>
Коммутатор -J
работает только на более новых системах. Универсальная команда:
Сделать архив .tar.xz
tar cf - directory/ | xz -zf - > directory.tar.xz
Объяснение
tar cf - directory
читает каталог/и начинает помещать его в формат TAR. Вывод этой операции генерируется на стандартном выходе.
|
выводит стандартный вывод на вход другой программы...
... который оказывается xz -zf -
. XZ настроен на создание (-z
) архива из файла (-f
), который является стандартным вводом (-
).
Вы перенаправляете вывод из xz
в файл tar.xz
.
Если вам нравится режим трубы, это наиболее чистое решение:
tar c some-dir | xz > some-dir.tar.xz
Не нужно ставить параметр f
для обработки файлов, а затем использовать -
, чтобы указать, что файл является стандартным вводом. Также нет необходимости указывать параметр -z
для xz
, потому что он по умолчанию.
Он также работает с gzip
и bzip2
:
tar c some-dir | gzip > some-dir.tar.gz
или
tar c some-dir | bzip2 > some-dir.tar.bz2
Декомпрессия также довольно проста:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Если у вас есть только tar
архив, вы можете использовать cat
:
cat archive.tar | tar x
Если вам нужно только перечислить файлы, используйте tar t
.
Попробуйте следующее: tar -cf file.tar file-to-compress ; xz -z file.tar
Примечание:
|
, потому что это запускает команды одновременно. Использование ;
или &
выполняет команды один за другим.