Я хочу стиснути кілька зображень в архіві .xz. Як це зробити?
Я хочу стиснути кілька зображень в архіві .xz. Як це зробити?
Відповіді:
Хоча як це детально описано Zacharee1 та heemayl, це те, що ви хочете зробити, інший спосіб - передавати дані команди в команду:tar cJf archive files...
xz
tar c files... | xz > archive.tar.xz
Оскільки Ubuntu tar
підтримує цю J
опцію, цей альтернативний спосіб особливо корисний, коли ви хочете передати варіанти xz
.
У цьому прикладі я націлюю та xzip деякі файли TIFF з високим рівнем стиснення ( -9
до xz
) та багатослівного виведення ( v
до tar
, -v
до xz
):
ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
100 % 207.3 KiB / 290.0 KiB = 0.715
Це, звичайно, можна зробити також у два чітко окремі кроки:
ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
100 % 207.3 KiB / 290.0 KiB = 0.715
Ці два способи фактично не є рівнозначними в тому, як вони діють, хоча .tar.xz
файли, які вони створюють, зрештою, повинні бути однаковими (і були, коли я тестував це).
tar
IS конвеєр ( |
) на вхід в xz
. xz
отримує дані tar
майже одразу, і жоден проміжний нестиснений файл tar не створюється. Це говорить про те, що перший спосіб, по суті , еквівалентно , щобtar cJf archive files...
, за винятком додаткових аргументів , переданих за винятком xz
.xz
у другій команді. ( xz
автоматично видаляє вихідний файл, коли це зроблено, якщо тільки не викликається з -k
/ --keep
.)Для подальшого читання дивіться цю публікацію Рафаеля ван Хорна та програми tar
та та вікна xz
.
tar -J
- це вказати змінну середовища XZ_OPT
, зробивши виклик приблизно таким чином:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Використовувати tar
з -J
опцією:
tar -cvJf images.tar.xz /directory/containing/images/*
tar
використовується для об'єднання декількох файлів в один (Архів), і тоді нам потрібно стиснути архів за допомогою алгоритму стиснення XZ.
Від man tar
:
-c, --create
create a new archive
-v, --verbose
verbosely list files processed
-J, --xz
-f, --file ARCHIVE
use archive file or device ARCHIVE
Також зауважте, що images.tar.xz
буде створено в поточному каталозі, якщо ви хочете зберегти його де-небудь ще /full/path/to/images.tar.xz
.
xz
є найповільнішим серед xz
, gzip
, bzip2
з - за його більш високу ступінь стиснення , ніж others..the повільність варто мати справу з , якщо ви хочете більше стиснення ..
Використовуйте цю команду: tar cJf <archive.tar.xz> <files>
. Відокремте шляхи до файлу з пробілом.
-cfJ
-
в front..from man tar
: A function letter need not be prefixed with ``-''
..so tar cJf
абсолютно нормально.
tar cJf
, це дасть ОП інший спосіб зробити це, оскільки моя відповідь tar --cvJf
спочатку вже висвітлена ..