使用 Gzip 将大目录压缩成单独的 .gz 文件以进行 ssh 传输

使用 Gzip 将大目录压缩成单独的 .gz 文件以进行 ssh 传输

我有一个目录,里面有大约 200,000 个 .npy 文件,总大小大约为 100 GB。所有文件都直接存储在主目录下(即没有子目录)。我需要传输目录,并希望先将其压缩为较少数量的 gzip 文件,然后使用 ssh 进行传输。我曾天真地尝试过一次对整个目录进行 gzip 压缩,这导致我的服务器冻结,需要硬重启。

我怎样才能轻松地将文件目录 gzip 压缩为 1000 个 .gz 文件,然后可以轻松地传输并再次解压缩?

我更希望以这样一种方式来实现这一点:服务器上任何一点的最大资源消耗(主要是 RAM/IO)与目录的特征(总大小/文件数)无关。我希望找到一种方法,让我能够使用更大的目录而不会让我的服务器冻结。解决方案最好是使用 bash 或 Python。谢谢!

答案1

这似乎与 很匹配rsync。它将透明地压缩内容,并且可以指示限制带宽使用,这既可以避免网络堵塞,也可以防止原始服务器上的高 IO 负载:

rsync -az --bwlimit=1m directory server:/destination/

-a告诉rsync复制文件元数据(例如创建时间),-z意味着使用压缩,并--bwlimit限制网络使用的带宽。

使用时还有一个额外的好处rsync,如果您因任何原因中断操作并再次运行,它将自动从中断处继续。如果您还需要删除目标处的额外文件,请添加该--delete选项。

相关内容