如何加速tar,只构建一个包而不压缩

如何加速tar,只构建一个包而不压缩

我在 Linux 机器上有一个 2TB 的大文件夹,其中包含 1000000 个文件。我想用 tar 构建一个包。我不关心 tar 文件的大小,因此不需要压缩数据。我怎样才能tar加快速度?我花了一个小时来构建一个包tar -cf xxx.tar xxx/。我有一个强大的28核CPU和500GB内存,有办法让tar运行多线程吗?

或者,有什么好的方法可以在不同文件夹之间、不同服务器之间传输大量小文件吗?我的文件系统是ext4。

答案1

正如@Kusalananda 在评论中所说,tar 是磁盘绑定的。您可以做的最好的事情之一是将输出放在单独的磁盘上,这样写入就不会减慢读取速度。

如果您的下一步是通过网络移动文件,我建议您首先通过网络创建 tar 文件:

$ tar -cf - xxx/ | ssh otherhost 'cat > xxx.tar'

这样,本地主机只需读取文件,而不必适应 tar 消耗的写入带宽。 tar 的磁盘输出被网络连接和 上的磁盘系统吸收otherhost

答案2

或者,有什么好的方法可以在不同文件夹之间、不同服务器之间传输大量小文件吗?我的文件系统是ext4。

我经常使用通过 ssh 进行的 Rsync。当与选项一起使用时,它会保留文件权限、符号链接等--archive

rsync -av /mnt/data <server>:/mnt

本示例将本地目录/mnt/data及其内容复制到远程服务器内/mnt。它调用 ssh 来建立连接。线路两侧都不需要 rsync 守护进程。

该操作也可以在2个本地目录之间执行,或者从远程到本地。

相关内容