即时将 7z 存档重新压缩为 tar.zst

即时将 7z 存档重新压缩为 tar.zst

我有一堆7z我想重新压缩的档案(包含目录和文件)tar.zst(如果/当我需要取消归档它们时,它可以提供更好的解压速度)。

我可以手动解压缩它们,然后重新压缩,tar -cvf --zstd foo.tar.zst foo/但这意味着将完全解压缩的文件放在磁盘上,这从磁盘利用率 PoV 来看并不是很好。

是否可以将文件(以|某种方式)从 7z“流式传输”到 tar,以重新压缩这些文件,而无需在磁盘上保存解压缩的文件?如果是这样,类似的解决方案是否适用于rar其他zip存档类型?

答案1

如果您关心磁盘写入,并且 RAM 足够大来托管文件并执行(解)压缩操作,则可以使用临时ramfs.我建议这样做,tempfs因为ramfs随着内容的动态增长,并且不使用交换 - 所以没有磁盘写入,也没有事先考虑大小。仅 RAM 操作的速度也得到提高。

mkdir -p /mnt/ram
mount -t ramfs ramfs /mnt/ram

然后提取到那里并从那里压缩。请注意,如果发生断电等情况,日期将会丢失,因此请确保tar.zst在删除.7z文件之前做好准备。

相关内容