[英]In linux how to archive and compress multiple files into one and remove source files?
我在目錄中有以下文件。
file001
file002
.
.
file009
我需要將它們壓縮為一個並刪除原始/源文件( file001 .. file009
),以便釋放一些磁盤空間。
這就是我所做的:使用以下命令將所有文件歸檔到一個文件中
tar -cvf file00.tar file00*
然后使用以下命令壓縮存檔文件
xz file00.tar
以前我已經使用單個命令進行了存檔和壓縮
tar -cJvf file00.tar.xz file00*
xz
做得很好,將10GB的文件壓縮到不到400MB,但是這些方法存在一些問題:
我的問題是, 有什么方法可以使用單個命令將多個文件歸檔並將其壓縮為一個文件,該命令還會刪除源文件? 是否有其他壓縮工具像xz一樣有效,但運行速度更快?
我在其他一些站點中看到可以使用多個內核/線程來增強xz進程,但我自己沒有嘗試過。
提前致謝。
您可以嘗試pixz
,它是xz
工具的並行變體(或xz
工具的pxz
並行變體):
tar -Ipixz -cf foo.tpxz foo/`
tar有-I compressor
選項,用於選擇非標准壓縮器,並且應該在f
選項之前,因為f選項需要字符串參數。
對於刪除,在GNU Tar https://www.gnu.org/software/tar/manual/html_node/remove-files.html中有一個選項(為什么它在“ --extract
使用的4.4選項”部分中? )
刪除文件
請參閱本節過於簡潔。 還有補充嗎? 舉個例子吧?
--remove-files
將文件添加到存檔后刪除文件。
我沒有對其進行測試,但已在https://serverfault.com/questions/283355/correct-way-of-using-the-remove-files-option-with-tar (和https:// superuser )中列出.com / questions / 96860 )再次在-f
選項之前使用:
tar --remove-files -cvfj archive.tar.bz2 archive/
因此,結合使用這兩個選項(在安裝pixz
;仍可以通過經典的xz
工具打開它,並且也可以將其重命名為archive.tar.xz
):
tar -Ipixz --remove-files -cJvf file00.tpxz file00*
或使用xz
:
tar -Ixz --remove-files -cJvf file00.tar.xz file00*
PS:還有其他並行壓縮器: pigz
(gzip格式),pbzip2和lbzip2(bzip2格式,並不比xz和gzip緊湊且慢)。 也有像lz4
/ lz5
或facebook的zstd
這樣的快速壓縮zstd
。 還有一個lrzip
,它可以使用多個線程進行壓縮,並且可以查找遠距離的數據重復,然后使用lzma( 默認情況下 ,類似於xz的方法)或經典gz或更快的LZO或非常慢而有效的ZPAQ進行壓縮。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.