首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用从解压缩-p cmd中传输的数据来使用SCP吗?

我可以使用从解压缩-p cmd中传输的数据来使用SCP吗?
EN

Stack Overflow用户
提问于 2018-04-17 17:26:18
回答 1查看 3.2K关注 0票数 3

我们用的是:

代码语言:javascript
复制
Linux version 2.6.32-696.20.1.el6.x86_64 (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Fri Jan 12 15:07:59 EST 2018 x86_64 x86_64 x86_64 GNU/Linux

我希望使用scp (安全复制过程)将数据从一个服务器发送到另一个服务器。

我们先解压缩数据。此外,我们只解压缩数据并将其(因此是解压缩-p)传输到服务器,而不是解压缩到本地服务器上的文件,然后发送。这是因为服务器是生产服务器,他们不希望我们在生产服务器上存储任何可能累积的额外文件。

初始的概念命令如下所示;

代码语言:javascript
复制
unzip -p car.zip car1 | scp eagle@svamn14glbsalh:/pacelog/AUTOSYS/upload_event_logs/data/car1

我想让Linux做的是:

  1. 只解压来自文件car1的数据,从file文件car.zip解压缩数据。
  2. 将该信息传递到scp命令。
  3. 使用scp,将数据复制到以下服务器上的以下目录: eagle@svamn14glbsalh:/pacelog/AUTOSYS/upload_event_logs/data/

我得到了用法错误:

代码语言:javascript
复制
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

因此,我尝试使用以下命令进行不同的操作:

代码语言:javascript
复制
unzip -p car.zip car1 >  scp eagle@svamn14glbsalh:/pacelog/AUTOSYS/upload_event_logs/data/car1

我正在考虑从解压缩通讯中获取数据流并将输出发送到scp命令.它没有起作用。我得到了以下错误:

代码语言:javascript
复制
caution: filename not matched:  eagle@svamn14glbsalh:/pacelog/AUTOSYS/upload_event_logs/data/car1

有人有什么想法吗?我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-04-18 13:23:41

SCP不太适合你的目的。SCP协议不支持将未知大小的字节流发送到要保存为文件的远程系统。用于发送文件的SCP协议消息要求首先发送文件的大小,然后是构成文件的字节。使用从管道读取的字节流,您通常不知道管道将产生多少字节,因此无法发送包含正确大小的SCP协议消息。

(据我所知,关于SCP协议的最好的在线描述是这里。注意"C“的信息。)

SFTP协议可以用于这类事情。据我所知,普通的sftp命令行实用程序不支持读取管道并将其存储为远程文件。但是大多数现代编程语言(perl、python、ruby、C#、Java、C等)都有SSH/SFTP库。如果您知道如何使用这些语言之一,那么编写一个实用程序来满足您的需要应该是非常简单的。

如果您一直使用shell脚本,那么就有可能欺骗足够多的SCP协议来传输文件。下面是一个例子:

代码语言:javascript
复制
#!/bin/bash
cmd='cat /etc/group'

size=$($cmd | wc -c)    
{
        echo C0644 $size some-file
        $cmd
        echo -n -e '\000'
} | ssh user@host scp -v -p -t /some/directory

这将在具有644权限的远程系统上在some-file中创建/some/directory。文件内容将是$cmd写入其标准输出的任何内容。请注意,您正在运行该命令两次,无论这意味着什么资源消耗和副作用。并且该命令必须每次输出相同的字节数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49884079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档