查看源代码 ssh_sftp (ssh v5.2.5)

SFTP 客户端。

此模块实现 SSH FTP (SFTP) 客户端。SFTP 是一种安全的加密文件传输服务,可用于 SSH。

概要

类型:Crypto open_tar

init_fun/0 返回的初始 crypto_state/0 被折叠到 tar_crypto_speccrypto_fun/0 的重复应用中。从该函数返回的二进制数据会发送到远程 SFTP 服务器,新的 crypto_state/0 会用于下一次调用 crypto_fun/0

tar_crypto_spec 中的 init_fun/0 在任何其他 crypto 操作之前应用一次。目的是此函数初始化加密或解密,例如通过调用 crypto:crypto_init/4 或类似函数。crypto_state/0 是此类函数可能返回的状态。

指定使用 open_tar/3open_tar/4 时应用于 tar 文件的加密或解密。

如果进行加密,则 tar_crypto_spec 中的 final_fun/0 将应用于最后一块数据。final_fun/0 负责填充(如果需要)和最后一块数据的加密。

类型

描述操作失败的原因。

函数

apread/4 函数从指定位置读取,组合了 position/3aread/3 函数。

apwrite/4 函数写入到指定位置,组合了 position/3awrite/3 函数。

从打开的文件读取,无需等待结果。如果句柄有效,则该函数返回 {async, N},其中 N 是一个项,保证在 aread 的调用之间是唯一的。实际数据作为消息发送到调用进程。此消息的格式为 {async_reply, N, Result},其中 Result 是读取的结果,可以是 {ok, Data}eof{error, reason()}

写入到打开的文件,无需等待结果。如果句柄有效,则该函数返回 {async, N},其中 N 是一个项,保证在 awrite 的调用之间是唯一的。write 操作的结果作为消息发送到调用进程。此消息的格式为 {async_reply, N, Result},其中 Result 是写入的结果,可以是 ok{error, reason()}

关闭服务器上打开的文件或目录的句柄。

删除由 Name 指定的目录。该目录必须为空才能成功删除。

删除由 Name 指定的文件。

列出服务器上的给定目录,将文件名作为字符串列表返回。

创建由 Name 指定的目录。Name 必须是新目录的完整路径。该目录只能在现有目录中创建。

创建一个指向 Target 的符号链接,名称为 Name

打开服务器上的文件并返回一个句柄,该句柄可用于读取或写入。

打开与 ChannelPid 关联的服务器上 tar 文件的句柄。该句柄可用于远程 tar 创建和提取。实际的写入和读取通过调用 erl_tar:add/3,4erl_tar:extract/2 来执行。注意:不应调用 erl_tar:init/3 函数,此 open_tar 函数会调用它。

打开服务器上目录的句柄。该句柄可用于读取目录内容。

设置由 Handle 引用的文件的文件位置。如果成功,则返回 {ok, NewPosition}(作为绝对偏移量),否则返回 {error, reason()}Location 是以下之一

pread/3,4 函数从指定位置读取,组合了 position/3read/3,4 函数。

pwrite/3,4 函数写入到指定位置,组合了 position/3write/3,4 函数。

Handle 引用的文件中读取 Len 个字节。返回 {ok, Data}eof{error, reason()}。如果使用 binary 打开文件,则 Data 为二进制数据,否则为字符串。

从服务器读取文件,并将数据以二进制形式返回。

从由 NameHandle 指定的文件系统对象返回 file_info 记录。有关该记录的信息,请参阅 file:read_file_info/2

从由 name 指定的符号链接读取链接目标。

从由 NameHandle 指定的符号链接返回 file_info 记录。有关该记录的信息,请参阅 file:read_link_info/2

重命名名为 OldName 的文件,并将其命名为 NewName

start_channel(Host, Port, Options) ->

停止 SFTP 通道。不关闭 SSH 连接。使用 ssh:close/1 关闭它。

data 写入由 Handle 引用的文件。该文件要使用 writeappend 标志打开。如果成功,则返回 ok,否则返回 {error, reason()}

将文件写入服务器。如果文件不存在则创建,如果存在则覆盖。

file_info 记录中的文件信息写入由 Name 指定的文件。有关该记录的信息,请参阅 file:write_file_info/2,3

类型:Crypto open_tar

-type chunk_size() :: undefined | pos_integer().
-type crypto_fun() :: fun((TextIn :: binary(), crypto_state()) -> crypto_result()).
-type crypto_result() ::
          {ok, TextOut :: binary(), crypto_state()} |
          {ok, TextOut :: binary(), crypto_state(), chunk_size()}.

init_fun/0 返回的初始 crypto_state/0 被折叠到 tar_crypto_speccrypto_fun/0 的重复应用中。从该函数返回的二进制数据会发送到远程 SFTP 服务器,新的 crypto_state/0 会用于下一次调用 crypto_fun/0

如果 crypto_fun/0 返回 chunk_size/0,则该值是在调用 crypto_fun/0 时进一步块的块大小。

-type crypto_state() :: any().

tar_crypto_spec 中的 init_fun/0 在任何其他 crypto 操作之前应用一次。目的是此函数初始化加密或解密,例如通过调用 crypto:crypto_init/4 或类似函数。crypto_state/0 是此类函数可能返回的状态。

如果选择的密码需要将输入数据分成特定大小的块,则 init_fun/0 应返回第二种形式的返回值,其中 chunk_size/0 设置为块大小。如果 chunk_size/0undefined,则 PlainBin 的大小会变化,因为这是为流密码设计的,而固定的 chunk_size/0 是为块密码设计的。 chunk_size/0 的值可以在 crypto_fun/0 的返回值中更改。该值可以在 pos_integer/0undefined 之间更改。

-type decrypt_spec() :: {init_fun(), crypto_fun()}.

指定使用 open_tar/3open_tar/4 时应用于 tar 文件的加密或解密。

加密或解密应用于生成的字节流,然后再将生成的流发送到 SFTP 服务器。

有关代码示例,请参阅 ssh 用户指南中的 加密示例 部分。

-type encrypt_spec() :: {init_fun(), crypto_fun(), final_fun()}.
-type final_fun() :: fun((FinalTextIn :: binary(), crypto_state()) -> {ok, FinalTextOut :: binary()}).

如果进行加密,则 tar_crypto_spec 中的 final_fun/0 将应用于最后一块数据。final_fun/0 负责填充(如果需要)和最后一块数据的加密。

-type init_fun() :: fun(() -> {ok, crypto_state()}) | fun(() -> {ok, crypto_state(), chunk_size()}).
-type tar_crypto_spec() :: encrypt_spec() | decrypt_spec().

类型

-type reason() :: atom() | string() | tuple().

描述操作失败的原因。

atom/0 值是由协议级别响应中的 sftp 错误代码形成的,如 draft-ietf-secsh-filexfer-13 第 9.1 节中定义的那样。这些代码被命名为 SSH_FX_*,它们被转换为星号部分的小写形式。例如,错误代码 SSH_FX_NO_SUCH_FILE 将导致 reason/0no_such_file

string/0 原因是在出现退出信号时,来自服务器的错误信息。如果该信息为空,则原因是退出信号的名称。

tuple/0 原因是其他错误,例如 {exit_status,1}

-type sftp_option() ::
          {timeout, timeout()} |
          {sftp_vsn, pos_integer()} |
          {window_size, pos_integer()} |
          {packet_size, pos_integer()}.

函数

此函数的链接

apread(ChannelPid, Handle, Position, Len)

查看源代码
-spec apread(ChannelPid, Handle, Position, Len) -> {async, N} | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Position :: integer(),
                    Len :: integer(),
                    Error :: {error, reason()},
                    N :: term().

apread/4 函数从指定位置读取,组合了 position/3aread/3 函数。

此函数的链接

apwrite(ChannelPid, Handle, Position, Data)

查看源代码
-spec apwrite(ChannelPid, Handle, Position, Data) -> {async, N} | Error
                 when
                     ChannelPid :: pid(),
                     Handle :: term(),
                     Position :: integer(),
                     Data :: binary(),
                     Error :: {error, reason()},
                     N :: term().

apwrite/4 函数写入到指定位置,组合了 position/3awrite/3 函数。

此函数的链接

aread(ChannelPid, Handle, Len)

查看源代码
-spec aread(ChannelPid, Handle, Len) -> {async, N} | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Len :: integer(),
                   Error :: {error, reason()},
                   N :: term().

从打开的文件读取,无需等待结果。如果句柄有效,则该函数返回 {async, N},其中 N 是一个项,保证在 aread 的调用之间是唯一的。实际数据作为消息发送到调用进程。此消息的格式为 {async_reply, N, Result},其中 Result 是读取的结果,可以是 {ok, Data}eof{error, reason()}

此函数的链接

awrite(ChannelPid, Handle, Data)

查看源代码
-spec awrite(ChannelPid, Handle, Data) -> {async, N} | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Data :: binary(),
                    Error :: {error, reason()},
                    N :: term().

写入到打开的文件,无需等待结果。如果句柄有效,则该函数返回 {async, N},其中 N 是一个项,保证在 awrite 的调用之间是唯一的。write 操作的结果作为消息发送到调用进程。此消息的格式为 {async_reply, N, Result},其中 Result 是写入的结果,可以是 ok{error, reason()}

此函数的链接

close(ChannelPid, Handle)

查看源代码
-spec close(ChannelPid, Handle) -> ok | Error
               when ChannelPid :: pid(), Handle :: term(), Error :: {error, reason()}.

等同于 close/3

此函数的链接

close(ChannelPid, Handle, Timeout)

查看源代码
-spec close(ChannelPid, Handle, Timeout) -> ok | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Timeout :: timeout(),
                   Error :: {error, reason()}.

关闭服务器上打开的文件或目录的句柄。

此函数的链接

del_dir(ChannelPid, Name)

查看源代码
-spec del_dir(ChannelPid, Name) -> ok | Error
                 when ChannelPid :: pid(), Name :: string(), Error :: {error, reason()}.

等同于 del_dir/3

此函数的链接

del_dir(ChannelPid, Name, Timeout)

查看源代码
-spec del_dir(ChannelPid, Name, Timeout) -> ok | Error
                 when
                     ChannelPid :: pid(),
                     Name :: string(),
                     Timeout :: timeout(),
                     Error :: {error, reason()}.

删除由 Name 指定的目录。该目录必须为空才能成功删除。

此函数的链接

delete(ChannelPid, Name)

查看源代码
-spec delete(ChannelPid, Name) -> ok | Error
                when ChannelPid :: pid(), Name :: string(), Error :: {error, reason()}.

等同于 delete/3

此函数的链接

delete(ChannelPid, Name, Timeout)

查看源代码
-spec delete(ChannelPid, Name, Timeout) -> ok | Error
                when
                    ChannelPid :: pid(),
                    Name :: string(),
                    Timeout :: timeout(),
                    Error :: {error, reason()}.

删除由 Name 指定的文件。

此函数的链接

list_dir(ChannelPid, Path)

查看源代码
-spec list_dir(ChannelPid, Path) -> {ok, FileNames} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      FileNames :: [FileName],
                      FileName :: string(),
                      Error :: {error, reason()}.

等同于 list_dir/3

此函数的链接

list_dir(ChannelPid, Path, Timeout)

查看源代码
-spec list_dir(ChannelPid, Path, Timeout) -> {ok, FileNames} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      Timeout :: timeout(),
                      FileNames :: [FileName],
                      FileName :: string(),
                      Error :: {error, reason()}.

列出服务器上的给定目录,将文件名作为字符串列表返回。

此函数的链接

make_dir(ChannelPid, Name)

查看源代码
-spec make_dir(ChannelPid, Name) -> ok | Error
                  when ChannelPid :: pid(), Name :: string(), Error :: {error, reason()}.

等同于 make_dir/3

此函数的链接

make_dir(ChannelPid, Name, Timeout)

查看源代码
-spec make_dir(ChannelPid, Name, Timeout) -> ok | Error
                  when
                      ChannelPid :: pid(),
                      Name :: string(),
                      Timeout :: timeout(),
                      Error :: {error, reason()}.

创建由 Name 指定的目录。Name 必须是新目录的完整路径。该目录只能在现有目录中创建。

此函数的链接

make_symlink(ChannelPid, Name, Target)

查看源代码
-spec make_symlink(ChannelPid, Name, Target) -> ok | Error
                      when
                          ChannelPid :: pid(),
                          Name :: string(),
                          Target :: string(),
                          Error :: {error, reason()}.

等同于 make_symlink/4

此函数的链接

make_symlink(ChannelPid, Name, Target, Timeout)

查看源代码
-spec make_symlink(ChannelPid, Name, Target, Timeout) -> ok | Error
                      when
                          ChannelPid :: pid(),
                          Name :: string(),
                          Target :: string(),
                          Timeout :: timeout(),
                          Error :: {error, reason()}.

创建一个指向 Target 的符号链接,名称为 Name

此函数的链接

open(ChannelPid, Name, Mode)

查看源代码
-spec open(ChannelPid, Name, Mode) -> {ok, Handle} | Error
              when
                  ChannelPid :: pid(),
                  Name :: string(),
                  Mode :: [read | write | append | binary | raw],
                  Handle :: term(),
                  Error :: {error, reason()}.

等同于 open/4

此函数的链接

open(ChannelPid, Name, Mode, Timeout)

查看源代码
-spec open(ChannelPid, Name, Mode, Timeout) -> {ok, Handle} | Error
              when
                  ChannelPid :: pid(),
                  Name :: string(),
                  Mode :: [read | write | append | binary | raw],
                  Timeout :: timeout(),
                  Handle :: term(),
                  Error :: {error, reason()}.

打开服务器上的文件并返回一个句柄,该句柄可用于读取或写入。

此函数的链接

open_tar(ChannelPid, Path, Mode)

查看源代码 (自 OTP 17.4 起)
-spec open_tar(ChannelPid, Path, Mode) -> {ok, Handle} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      Mode :: [read | write | {crypto, tar_crypto_spec()}],
                      Handle :: term(),
                      Error :: {error, reason()}.

等同于 open_tar/4

此函数的链接

open_tar(ChannelPid, Path, Mode, Timeout)

查看源代码 (自 OTP 17.4 起)
-spec open_tar(ChannelPid, Path, Mode, Timeout) -> {ok, Handle} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      Mode :: [read | write | {crypto, tar_crypto_spec()}],
                      Timeout :: timeout(),
                      Handle :: term(),
                      Error :: {error, reason()}.

打开与 ChannelPid 关联的服务器上 tar 文件的句柄。该句柄可用于远程 tar 创建和提取。实际的写入和读取通过调用 erl_tar:add/3,4erl_tar:extract/2 来执行。注意:不应调用 erl_tar:init/3 函数,此 open_tar 函数会调用它。

有关代码示例,请参阅 ssh 用户指南中的 使用 TAR 压缩的 SFTP 客户端 部分。

crypto 模式选项在上面的数据类型部分中进行了解释,请参阅 open_tar 的加密操作。如果 Mode 包含 write,则假定为加密;如果 Mode 包含 read,则假定为解密。

此函数的链接

opendir(ChannelPid, Path)

查看源代码
-spec opendir(ChannelPid, Path) -> {ok, Handle} | Error
                 when
                     ChannelPid :: pid(), Path :: string(), Handle :: term(), Error :: {error, reason()}.

等同于 opendir/3

此函数的链接

opendir(ChannelPid, Path, Timeout)

查看源代码
-spec opendir(ChannelPid, Path, Timeout) -> {ok, Handle} | Error
                 when
                     ChannelPid :: pid(),
                     Path :: string(),
                     Timeout :: timeout(),
                     Handle :: term(),
                     Error :: {error, reason()}.

打开服务器上目录的句柄。该句柄可用于读取目录内容。

此函数的链接

position(ChannelPid, Handle, Location)

查看源代码
-spec position(ChannelPid, Handle, Location) -> {ok, NewPosition} | Error
                  when
                      ChannelPid :: pid(),
                      Handle :: term(),
                      Location ::
                          Offset | {bof, Offset} | {cur, Offset} | {eof, Offset} | bof | cur | eof,
                      Offset :: integer(),
                      NewPosition :: integer(),
                      Error :: {error, reason()}.

等同于 position/4

此函数的链接

position(ChannelPid, Handle, Location, Timeout)

查看源代码
-spec position(ChannelPid, Handle, Location, Timeout) -> {ok, NewPosition} | Error
                  when
                      ChannelPid :: pid(),
                      Handle :: term(),
                      Location ::
                          Offset | {bof, Offset} | {cur, Offset} | {eof, Offset} | bof | cur | eof,
                      Timeout :: timeout(),
                      Offset :: integer(),
                      NewPosition :: integer(),
                      Error :: {error, reason()}.

设置由 Handle 引用的文件的文件位置。如果成功,则返回 {ok, NewPosition}(作为绝对偏移量),否则返回 {error, reason()}Location 是以下之一

  • Offset - 与 {bof, Offset} 相同。

  • {bof, Offset} - 绝对偏移量。

  • {cur, Offset} - 从当前位置的偏移量。

  • {eof, Offset} - 从文件末尾的偏移量。

  • bof | cur | eof - 与之前的相同,偏移量为 0,即 {bof, 0} | {cur, 0} | {eof, 0}

此函数的链接

pread(ChannelPid, Handle, Position, Len)

查看源代码
-spec pread(ChannelPid, Handle, Position, Len) -> {ok, Data} | eof | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Position :: integer(),
                   Len :: integer(),
                   Data :: string() | binary(),
                   Error :: {error, reason()}.

等同于 pread/5

此函数的链接

pread(ChannelPid, Handle, Position, Len, Timeout)

查看源代码
-spec pread(ChannelPid, Handle, Position, Len, Timeout) -> {ok, Data} | eof | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Position :: integer(),
                   Len :: integer(),
                   Timeout :: timeout(),
                   Data :: string() | binary(),
                   Error :: {error, reason()}.

pread/3,4 函数从指定位置读取,组合了 position/3read/3,4 函数。

此函数的链接

pwrite(ChannelPid, Handle, Position, Data)

查看源代码
-spec pwrite(ChannelPid, Handle, Position, Data) -> ok | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Position :: integer(),
                    Data :: iolist(),
                    Error :: {error, reason()}.

等同于 pwrite/5

此函数的链接

pwrite(ChannelPid, Handle, Position, Data, Timeout)

查看源代码
-spec pwrite(ChannelPid, Handle, Position, Data, Timeout) -> ok | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Position :: integer(),
                    Data :: iolist(),
                    Timeout :: timeout(),
                    Error :: {error, reason()}.

pwrite/3,4 函数写入到指定位置,组合了 position/3write/3,4 函数。

此函数的链接

read(ChannelPid, Handle, Len)

查看源代码
-spec read(ChannelPid, Handle, Len) -> {ok, Data} | eof | Error
              when
                  ChannelPid :: pid(),
                  Handle :: term(),
                  Len :: integer(),
                  Data :: string() | binary(),
                  Error :: {error, reason()}.

等同于 read/4

此函数的链接

read(ChannelPid, Handle, Len, Timeout)

查看源代码
-spec read(ChannelPid, Handle, Len, Timeout) -> {ok, Data} | eof | Error
              when
                  ChannelPid :: pid(),
                  Handle :: term(),
                  Len :: integer(),
                  Timeout :: timeout(),
                  Data :: string() | binary(),
                  Error :: {error, reason()}.

Handle 引用的文件中读取 Len 个字节。返回 {ok, Data}eof{error, reason()}。如果使用 binary 打开文件,则 Data 为二进制数据,否则为字符串。

如果读取文件超过 eof,则仅读取并返回剩余的字节。如果没有读取任何字节,则返回 eof

此函数的链接

read_file(ChannelPid, File)

查看源代码
-spec read_file(ChannelPid, File) -> {ok, Data} | Error
                   when
                       ChannelPid :: pid(),
                       File :: string(),
                       Data :: binary(),
                       Error :: {error, reason()}.

等同于 read_file/3

此函数的链接

read_file(ChannelPid, File, Timeout)

查看源代码
-spec read_file(ChannelPid, File, Timeout) -> {ok, Data} | Error
                   when
                       ChannelPid :: pid(),
                       File :: string(),
                       Data :: binary(),
                       Timeout :: timeout(),
                       Error :: {error, reason()}.

从服务器读取文件,并将数据以二进制形式返回。

此函数的链接

read_file_info(ChannelPid, Name)

查看源代码
-spec read_file_info(ChannelPid, Name) -> {ok, FileInfo} | Error
                        when
                            ChannelPid :: pid(),
                            Name :: string(),
                            FileInfo :: file:file_info(),
                            Error :: {error, reason()}.

等同于 read_file_info/3

此函数的链接

read_file_info(ChannelPid, Name, Timeout)

查看源代码
-spec read_file_info(ChannelPid, Name, Timeout) -> {ok, FileInfo} | Error
                        when
                            ChannelPid :: pid(),
                            Name :: string(),
                            Timeout :: timeout(),
                            FileInfo :: file:file_info(),
                            Error :: {error, reason()}.

从由 NameHandle 指定的文件系统对象返回 file_info 记录。有关该记录的信息,请参阅 file:read_file_info/2

根据底层操作系统,可能会跟踪链接并返回有关最终文件、目录等的信息。有关如何获取有关链接的信息,请参阅 read_link_info/2

此函数的链接

read_link(ChannelPid, Name)

查看源代码
-spec read_link(ChannelPid, Name) -> {ok, Target} | Error
                   when
                       ChannelPid :: pid(),
                       Name :: string(),
                       Target :: string(),
                       Error :: {error, reason()}.

等同于 read_link/3

此函数的链接

read_link(ChannelPid, Name, Timeout)

查看源代码
-spec read_link(ChannelPid, Name, Timeout) -> {ok, Target} | Error
                   when
                       ChannelPid :: pid(),
                       Name :: string(),
                       Target :: string(),
                       Timeout :: timeout(),
                       Error :: {error, reason()}.

从由 name 指定的符号链接读取链接目标。

此函数的链接

rename(ChannelPid, OldName, NewName)

查看源代码
-spec rename(ChannelPid, OldName, NewName) -> ok | Error
                when
                    ChannelPid :: pid(),
                    OldName :: string(),
                    NewName :: string(),
                    Error :: {error, reason()}.

等同于 rename/4

此函数的链接

rename(ChannelPid, OldName, NewName, Timeout)

查看源代码
-spec rename(ChannelPid, OldName, NewName, Timeout) -> ok | Error
                when
                    ChannelPid :: pid(),
                    OldName :: string(),
                    NewName :: string(),
                    Timeout :: timeout(),
                    Error :: {error, reason()}.

重命名名为 OldName 的文件,并将其命名为 NewName

-spec start_channel(ssh:open_socket() | ssh:connection_ref() | ssh:host()) ->
                       {ok, pid()} | {ok, pid(), ssh:connection_ref()} | {error, reason()}.

等同于 start_channel/3

-spec start_channel(ssh:open_socket(), [ssh:client_option() | sftp_option()]) ->
                       {ok, pid(), ssh:connection_ref()} | {error, reason()};
                   (ssh:connection_ref(), [sftp_option()]) ->
                       {ok, pid()} | {ok, pid(), ssh:connection_ref()} | {error, reason()};
                   (ssh:host(), [ssh:client_option() | sftp_option()]) ->
                       {ok, pid(), ssh:connection_ref()} | {error, reason()}.

等同于 start_channel/3

此函数的链接

start_channel(Host, Port, UserOptions0)

查看源代码
-spec start_channel(ssh:host(), inet:port_number(), [ssh:client_option() | sftp_option()]) ->
                       {ok, pid(), ssh:connection_ref()} | {error, reason()}.

start_channel(Host, Port, Options) ->

如果没有提供连接引用,则会建立一个连接,并返回新连接。启动 SSH 通道进程以处理与 SFTP 服务器的通信。此进程的返回 pid 将用作此模块中所有其他 API 函数的输入。

选项

  • {timeout, timeout()} - 有两种方法可以为底层 ssh 连接设置超时

    • 如果设置了连接超时选项 connect_timeout,则该值也用于协商超时,并且此选项 (timeout) 将被忽略。
    • 否则,此选项 (timeout) 仅用作协商超时,并且不设置连接超时

    该值默认为 infinity

  • {sftp_vsn, integer()} - 所需的 SFTP 协议版本。实际版本是所需版本和 SFTP 服务器支持的最大版本的最小值。

所有其他选项都直接传递给 ssh:connect/3,如果已提供连接,则会被忽略。

此函数的链接

stop_channel(ChannelPid)

查看源代码
-spec stop_channel(ChannelPid) -> ok when ChannelPid :: pid().

停止 SFTP 通道。不关闭 SSH 连接。使用 ssh:close/1 关闭它。

此函数的链接

write(ChannelPid, Handle, Data)

查看源代码
-spec write(ChannelPid, Handle, Data) -> ok | Error
               when ChannelPid :: pid(), Handle :: term(), Data :: iodata(), Error :: {error, reason()}.

等同于 write/4

此函数的链接

write(ChannelPid, Handle, Data, Timeout)

查看源代码
-spec write(ChannelPid, Handle, Data, Timeout) -> ok | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Data :: iodata(),
                   Timeout :: timeout(),
                   Error :: {error, reason()}.

data 写入由 Handle 引用的文件。该文件要使用 writeappend 标志打开。如果成功,则返回 ok,否则返回 {error, reason()}

此函数的链接

write_file(ChannelPid, File, Data)

查看源代码
-spec write_file(ChannelPid, File, Data) -> ok | Error
                    when
                        ChannelPid :: pid(),
                        File :: string(),
                        Data :: iodata(),
                        Error :: {error, reason()}.

等同于 write_file/4

此函数的链接

write_file(ChannelPid, File, Data, Timeout)

查看源代码
-spec write_file(ChannelPid, File, Data, Timeout) -> ok | Error
                    when
                        ChannelPid :: pid(),
                        File :: string(),
                        Data :: iodata(),
                        Timeout :: timeout(),
                        Error :: {error, reason()}.

将文件写入服务器。如果文件不存在则创建,如果存在则覆盖。

此函数的链接

write_file_info(ChannelPid, Name, FileInfo)

查看源代码
-spec write_file_info(ChannelPid, Name, FileInfo) -> ok | Error
                         when
                             ChannelPid :: pid(),
                             Name :: string(),
                             FileInfo :: file:file_info(),
                             Error :: {error, reason()}.

等同于 write_file_info/4

此函数的链接

write_file_info(ChannelPid, Name, FileInfo, Timeout)

查看源代码
-spec write_file_info(ChannelPid, Name, FileInfo, Timeout) -> ok | Error
                         when
                             ChannelPid :: pid(),
                             Name :: string(),
                             FileInfo :: file:file_info(),
                             Timeout :: timeout(),
                             Error :: {error, reason()}.

file_info 记录中的文件信息写入由 Name 指定的文件。有关该记录的信息,请参阅 file:write_file_info/2,3