如何通过 tar 管道 scp/ssh 文件传输(拉)(远程->本地传输从本地机器启动)

Gab*_*abe 2 ssh scp tar pipe

我想通过 tar 进行 scp pull 操作(下面没有 tar 的示例),以便只为大约 10 个目录写入一个 tar 文件:

user@localhost:/home/user> scp -r remoteuser@remotehost:dir_to_transfer ./
Run Code Online (Sandbox Code Playgroud)

我在远程机器上有目录,每个目录有大约 10,000 个小(~28k)文件要传输。由于文件配额,我没有太多可用空间在远程主机(remotehost)上运行 tar 命令。由于防火墙规则,我只能从我的本地机器(本地主机)启动传输。

绝对数量的文件使传输时间很长。

我已经找到了在“推送”数据时如何执行此操作的示例,但想知道在“拉”数据时如何执行此操作。

本地机器信息:

  • 操作系统:OpenSuSe 13.2(x86_64)

  • 重击 4.2.53(1)

  • OpenSSH_6.6.1p1、OpenSSL 1.0.1k-fips 2015 年 1 月 8 日

远程机器信息:

  • 操作系统:CentOS 5.11 版(最终版)
  • bash 3.2.25(1)
  • OpenSSH_4.3p2、OpenSSL 0.9.8e-fips-rhel5 2008 年 7 月 1 日

Arc*_*mar 5

尝试从 user@localhost

 > ssh -l remoteuser remotehost "tar cf - dir_to_transfert" > remote.tar
Run Code Online (Sandbox Code Playgroud)

在哪里

  • > 是提示
  • ssh -l remoteuser remotehost 将您连接到远程主机
  • "tar cf - dir_to_transfert" 对标准输出执行远程tarin
  • > remote.tar 将 ssh 的输出重定向到本地文件名 remote.tar

如果您被允许在远程主机上使用 tar,这将起作用。