我想通过 tar 进行 scp pull 操作(下面没有 tar 的示例),这样大约 10 个目录只写入一个 tar 文件:
user@localhost:/home/user> scp -r remoteuser@remotehost:dir_to_transfer ./
我在远程计算机上有目录,每个目录有大约 10,000 个小(~28k)文件要传输。由于文件配额,我没有太多可用空间来在远程主机(remotehost)上运行 tar 命令。由于防火墙规则,我只能从本地计算机(localhost)发起传输。
文件数量庞大,导致传输时间非常长。
我已经找到了如何在“推送”数据时执行此操作的示例,但想知道如何在“拉取”数据时执行此操作。
本地机器信息:
操作系统:OpenSuSe 13.2(x86_64)
bash 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 日
答案1
尝试从user@localhost
> ssh -l remoteuser remotehost "tar cf - dir_to_transfert" > remote.tar
在哪里
>
是提示ssh -l remoteuser remotehost
将您连接到远程主机"tar cf - dir_to_transfert"
对标准输出执行远程 tarin> remote.tar
将 ssh 的输出重定向到本地文件名remote.tar
如果您被允许在远程主机上使用 tar,这将起作用。