我通常使用tar zcvf压缩,使用tar zxvf解压(由于习惯使用gzip)。

我最近买了一个带有超线程的四核CPU,所以我有8个逻辑内核,我注意到许多内核在压缩/解压期间没有使用。

有什么方法可以利用未使用的内核使它更快吗?


当前回答

如果你想在文件名和压缩选项上有更多的灵活性,你可以使用:

find /my/path/ -type f -name "*.sql" -o -name "*.log" -exec \
tar -P --transform='s@/my/path/@@g' -cf - {} + | \
pigz -9 -p 4 > myarchive.tar.gz

第一步:寻找

查找/my/path/ -type f -name "*。Sql " -o -name "*.log" -exec

这个命令将查找您想要归档的文件,在本例中为/my/path/*。/my/path/*.log。添加任意数量的-o -name“pattern”。

-exec将使用find: tar的结果执行下一个命令

第二步:焦油

tar - p——transform='s@/my/path/@@g' -cf - {} +

——transform是一个简单的字符串替换参数。它将从存档中剥离文件的路径,以便在提取时tarball的根目录成为当前目录。注意,你不能使用-C选项来更改目录,因为你将失去find的好处:目录下的所有文件将被包括在内。

-P告诉tar使用绝对路径,所以它不会触发警告“从成员名中移除前导' /'”。'/'的前导被——transform删除。

-cf -告诉tar使用我们稍后指定的tarball名称

{} +使用之前找到的所有文件

第三步:猪

猪 -9 -P 4

使用尽可能多的参数。 在本例中,-9是压缩级别,- 4是专用于压缩的内核数。 如果你在一个重载的web服务器上运行这个程序,你可能不想使用所有可用的内核。

步骤4:存档名称

> myarchive.tar.gz

最后。

其他回答

如果你想在文件名和压缩选项上有更多的灵活性,你可以使用:

find /my/path/ -type f -name "*.sql" -o -name "*.log" -exec \
tar -P --transform='s@/my/path/@@g' -cf - {} + | \
pigz -9 -p 4 > myarchive.tar.gz

第一步:寻找

查找/my/path/ -type f -name "*。Sql " -o -name "*.log" -exec

这个命令将查找您想要归档的文件,在本例中为/my/path/*。/my/path/*.log。添加任意数量的-o -name“pattern”。

-exec将使用find: tar的结果执行下一个命令

第二步:焦油

tar - p——transform='s@/my/path/@@g' -cf - {} +

——transform是一个简单的字符串替换参数。它将从存档中剥离文件的路径,以便在提取时tarball的根目录成为当前目录。注意,你不能使用-C选项来更改目录,因为你将失去find的好处:目录下的所有文件将被包括在内。

-P告诉tar使用绝对路径,所以它不会触发警告“从成员名中移除前导' /'”。'/'的前导被——transform删除。

-cf -告诉tar使用我们稍后指定的tarball名称

{} +使用之前找到的所有文件

第三步:猪

猪 -9 -P 4

使用尽可能多的参数。 在本例中,-9是压缩级别,- 4是专用于压缩的内核数。 如果你在一个重载的web服务器上运行这个程序,你可能不想使用所有可用的内核。

步骤4:存档名称

> myarchive.tar.gz

最后。

您可以使用pigz而不是gzip,后者在多核上执行gzip压缩。而不是使用-z选项,你将通过pigz管道它:

tar cf - paths-to-archive | pigz > archive.tar.gz

默认情况下,pigz使用可用内核的数量,如果无法查询,则使用8个。你可以用-p n要求更多,例如-p 32。Pigz具有与gzip相同的选项,因此您可以使用-9请求更好的压缩。如。

tar cf - paths-to-archive | pigz -9 -p 32 > archive.tar.gz

您可能需要考虑的一个相对较新的(解)压缩工具是zstandard。它在利用备用内核方面做得很好,并且在压缩比和(解)压缩时间方面做了一些很好的权衡。它还可以根据您的压缩比需求进行高度调整。

你也可以使用tar标志"——use-compress-program="来告诉tar使用什么压缩程序。

例如:

tar -c --use-compress-program=pigz -f tar.file dir_to_zip 

你可以对tar的——use-compress-program开关使用快捷键-I,并在多核上调用pbzip2进行bzip2压缩:

tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 DIRECTORY_TO_COMPRESS/