我该在哪里找到关于scp -t的规范?

9
我发现我可以通过标准输入使用scp进行以下操作:
目录创建。
scp -tr .
stdin -> D0755 0 <directory_name>
stdin -> \x00

文件写入
scp -tr .
stdin -> C<filemode, eg. 0744> <file_size_in_bytes> <filename>
stdin -> actual file bytes
stdin -> \x00

在man手册中,我找不到任何有关此的提及,谷歌搜索也没有什么收获。我应该在哪里找到这些命令的规范:文件创建、目录创建?还有什么可以做的吗?我很好奇它是如何定义的。我甚至找不到最初发现这段代码的地方。为什么scp man页面中没有提到-t标志呢?

1个回答

12

scp 通过在远程服务器上打开一个SSH连接并调用另一个副本的scp来传输文件。两个scp实例通过简单的协议进行通信;一个实例发送命令和文件数据;另一个实例执行命令以将文件存储在其本地系统上。

-t选项告诉scp它是由另一个scp实例调用的,并且它将接收文件。还有另一个选项-f,它告诉scp它是由另一个实例调用的,并且应该发送文件。

您需要询问OpenSSH开发人员为什么没有记录这些选项。有人可能会认为这是因为它们不适合人类使用,因此不是用户界面的一部分。

我知道的SCP协议最好的在线描述是:


2
Oracle博客文章中的“协议消息列表”正是我在寻找的。 - James
1
为了完整性,似乎只有四种协议消息类型:C、D(正如我所提到的),以及 E 和 T。E 用于表示目录结束(可以与 D 嵌套以进行递归复制)。T 用于指定源文件的原始修改和访问时间。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接