如何将目录从远程压缩并下载到本地?

如何将目录从远程压缩并下载到本地?

我的 Ubuntu 服务器上有一个目录,其中包含许多子目录和文件。我想下载整个文件夹,因此我使用了以下命令:

scp -r [email protected]:/path/to/target_directory /path/to/local_directory

因此 target_directory 最终位于 /path/to/local_directory/target_directory。到目前为止,一切正常。

问题:target_directory 不是很大(大约 50MB),但有很多小文件。scp一个接一个地下载文件,这太耗时了。所以我在想也许有一种方法可以压缩目录并下载它(可选,不将压缩文件保留在服务器上)。我认为这是可以实现的,但不确定如何实现。

笔记:我使用 Mac 作为我的本地机器。

答案1

感谢@muru 的回答和解释。我发布此信息是为了提醒自己和其他可能需要此信息的人。

rsync真的很快!具体操作如下rsync

rsync -azP [email protected]:/path/to/target_directory/ /path/to/local_directory
  • -a将(递归地)复制所有内容
  • -z将压缩文件,
  • -P将显示每个文件的进度条

rsync允许您在发生中断或网络故障时只需运行相同的命令即可恢复下载。

笔记:/最右边的/path/to/target_directory/表示它将复制内容target_directory(而非目录本身)。如果您想要复制目录本身,请删除此尾部斜杠。

阅读更多:https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps

答案2

如果问题是有很多小文件,您实际上并不需要压缩。使用tar在 Ubuntu 上创建存档,而不是将存档保存到文件,而是将其发送到 stdout(当没有指定文件时,Ubuntu 的 GNU tar 的默认设置)并tar在另一端读取文件:

ssh ubuntu-server tar c -C /path/to/target_directory . | tar xvf - -C /path/to/local_directory

或者使用类似更智能的工具rsync

相关内容