windows環境下利用重定向管道解壓tar.xz壓縮檔案

lt發表於2017-01-13

ghc的安裝包都是tar.xz壓縮檔案格式.這個格式在windows下用7-zip工具可以開啟,但不能像winrar開啟tar.gz檔案那樣直接顯示tar檔案的具體內容,而是一個tar檔案本身。能否不用通過tar檔案中轉呢?通過摸索,找到了如下辦法。
1. 在http://tukaani.org/xz/下載xz命令列工具。
2. 在http://gnuwin32.sourceforge.net/packages/gtar.htm下載tar命令列工具。
3. 把這些工具安裝或解壓縮到同一個目錄。
利用http://www.ibm.com/developerworks/cn/linux/l-lo-xzutils/index.html介紹的:
6. 和 tar 命令配合處理多個檔案。
一般來說,有兩種簡單的方法將 tar 和 xz 結合起來,一是使用管道,或是使用 tar 命令的引數'J'。兩種方法各自有各自的優點,第一種方法可以充分利用 xz 利用豐富的引數。而第二種方法使用起來更簡單容易。例子分別如下:
使用管道
$ tar cf - *.c | xz --best > src.tar.xz   # compress
$ xz -d src.tar.xz --stdout | tar -x # decompress

使用 tar 引數 "J
$ tar cJf src.txz *.c # compress
$ tar xJf src.txz # decompress
經過實際操作,下面的方法可行。會在當前目錄直接生成xz-5.2.3目錄。

D:\testtgz>xz -d xz-5.2.3.tar.xz --stdout | tar -x
D:\testtgz>dir
2016/12/30  19:34              xz-5.2.3

D:\testtgz>tar cf - *.a | xz --best >a.tar.xz
D:\testtgz>dir
2017/01/13  22:01            74,488 a.tar.xz

而直接使用tar命令的方法不行。這個tar工具版本是2003年的,太古老了。

D:\testtgz> tar xJf a.tar.xz
tar: invalid option -- J
Try `tar --help' for more information.

D:\testtgz>\tar cJf src.txz *.epub
\tar: invalid option -- J
Try `\tar --help' for more information.

經過摸索,7z命令列也是支援寫入標準輸出(-so)和讀入標準輸入(-si)的,還支援指定檔案型別(-t),下面的方法可行,就無需下載其他工具了。

D:\testtgz>"C:\Program Files\7-Zip\7z.exe" e xz-5.2.3.tar.xz -so | "C:\Program Files\7-Zip\7z.exe" x -si -ttar

7-Zip [32] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21


Extracting archive:
--
Path =
Type = tar
Code Page = UTF-8

Everything is Ok

Folders: 37
Files: 453
Size:       5387865
Compressed: 252416

相關文章