我可以在压缩 tar.gz 文件时下载它吗?

我可以在压缩 tar.gz 文件时下载它吗?

我正在压缩一个可能超过 10 GB 的巨大目录,压缩它需要时间。但与此同时,我必须将其下载到另一个新服务器。

因此,在压缩过程中,我可以从另一台服务器下载该文件吗?下载后能正常使用吗?

答案1

您可以通过两个命令完成所有这些操作,一个在服务器上,一个在客户端上使用 tar、gzip、tee、nc。

在服务器上: tar cf - dirname/ | gzip -c - |tee dirname.tar.gz | nc -l 3333

在客户端 nc serveraddress 3333 > dirname.tar.gz

nc 代表 netcat,这是一个有用的工具,其行为类似于网络使用的 cat。 nc -l 3333将在本地端口 3333 上创建一个侦听套接字,并将 stdin 的内容流式传输给连接到它的用户。

nc serveraddress 3333将在端口 3333 上建立到服务器的 tcp 连接,并将在套接字连接中收到的所有内容流式传输到 stdout。

这是一种在不同机器上传输文件同时执行各种命令链(如 tar/gzip/tee ...)的非常简单的方法。

答案2

不确定您是否可以下载现有的压缩过程,但您也许可以rsync与该--inplace指令一起使用。您需要重复执行此操作,直到主机完成压缩过程。压缩完成后,您需要再次执行它以获得最终的更改增量。

另一种方法是在创建存档时直接开始下载文件:

ssh user@host "tar cf - /path/to/files|gzip -c -| \
tee /path/to/compressed_file" > /path/to/local_compressed_file

上面的命令将创建一个tar存档到stdout,也将流压缩到 ,stdout并使用tee将文件写入主机以及再次stdout,可以将其保存到本地副本。

相关内容