簡體   English   中英

在Linux中,如何將多個文件歸檔並壓縮為一個文件並刪除源文件?

[英]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,但是這些方法存在一些問題:

  1. 舊文件/源文件未刪除
  2. xz需要大量時間

我的問題是, 有什么方法可以使用單個命令將多個文件歸檔並將其壓縮為一個文件,該命令還會刪除源文件? 是否有其他壓縮工具像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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM