Provided by: erlang-manpages_18.3-dfsg-1ubuntu3.1_all bug

NAME

       ssh_sftp - SFTP client.

DESCRIPTION

       This  module  implements  an  SSH  FTP  (SFTP)  client. SFTP is a secure, encrypted file transfer service
       available for SSH.

DATA TYPES

       Type definitions that are used more than once in this module, or abstractions to  indicate  the  intended
       use of the data type, or both:

         ssh_connection_ref() =:
           opaque() - as returned by ssh:connect/3

         timeout():
           = infinity | integer() in milliseconds. Default infinity.

TIME-OUTS

       If  the  request  functions  for the SFTP channel return {error, timeout}, it does not guarantee that the
       request never reached the server and was not performed. It only means that no answer  was  received  from
       the server within the expected time.

EXPORTS

       apread(ChannelPid, Handle, Position, Len) -> {async, N} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Len = integer()
                 N = term()
                 Reason = term()

              The apread function reads from a specified position, combining the position and aread functions.

              ssh_sftp:apread/4

       apwrite(ChannelPid, Handle, Position, Data) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Len = integer()
                 Data = binary()
                 Timeout = timeout()
                 Reason = term()

              apwrite writes on a specified position, combining the position and awrite operations.

              ssh_sftp:awrite/3

       aread(ChannelPid, Handle, Len) -> {async, N} | {error, Error}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Len = integer()
                 N = term()
                 Reason = term()

              Reads  from  an  open  file,  without waiting for the result. If the handle is valid, the function
              returns {async, N}, where N is a term guaranteed to be unique between calls of aread.  The  actual
              data  is  sent  as  a  message  to the calling process. This message has the form {async_reply, N,
              Result}, where Result is the result from the read, either {ok, Data}, eof, or {error, Error}.

       awrite(ChannelPid, Handle, Data) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Len = integer()
                 Data = binary()
                 Timeout = timeout()
                 Reason = term()

              Writes to an open file, without waiting for the result. If  the  handle  is  valid,  the  function
              returns  {async, N}, where N is a term guaranteed to be unique between calls of awrite. The result
              of the write operation is sent as a message to the calling process.  This  message  has  the  form
              {async_reply, N, Result}, where Result is the result from the write, either ok, or {error, Error}.

       close(ChannelPid, Handle) ->
       close(ChannelPid, Handle, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Timeout = timeout()
                 Reason = term()

              Closes a handle to an open file or directory on the server.

       delete(ChannelPid, Name) ->
       delete(ChannelPid, Name, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Timeout = timeout()
                 Reason = term()

              Deletes the file specified by Name, like file:delete/1

       del_dir(ChannelPid, Name) ->
       del_dir(ChannelPid, Name, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Timeout = timeout()
                 Reason = term()

              Deletes  a  directory specified by Name. The directory must be empty before it can be successfully
              deleted.

       list_dir(ChannelPid, Path) ->
       list_dir(ChannelPid, Path, Timeout) -> {ok, Filenames} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Path = string()
                 Filenames = [Filename]
                 Filename = string()
                 Timeout = timeout()
                 Reason = term()

              Lists the given directory on the server, returning the filenames as a list of strings.

       make_dir(ChannelPid, Name) ->
       make_dir(ChannelPid, Name, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Timeout = timeout()
                 Reason = term()

              Creates a directory specified by Name. Name must be a full path to a new directory. The  directory
              can only be created in an existing directory.

       make_symlink(ChannelPid, Name, Target) ->
       make_symlink(ChannelPid, Name, Target, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Target = string()
                 Reason = term()

              Creates a symbolic link pointing to Target with the name Name, like file:make_symlink/2

       open(ChannelPid, File, Mode) ->
       open(ChannelPid, File, Mode, Timeout) -> {ok, Handle} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 File = string()
                 Mode = [Modeflag]
                 Modeflag = read | write | creat | trunc | append | binary
                 Timeout = timeout()
                 Handle = term()
                 Reason = term()

              Opens a file on the server and returns a handle, which can be used for reading or writing.

       opendir(ChannelPid, Path) ->
       opendir(ChannelPid, Path, Timeout) -> {ok, Handle} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Path = string()
                 Timeout = timeout()
                 Reason = term()

              Opens  a  handle  to  a  directory  on  the  server.  The handle can be used for reading directory
              contents.

       open_tar(ChannelPid, Path, Mode) ->
       open_tar(ChannelPid, Path, Mode, Timeout) -> {ok, Handle} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Path = string()
                 Mode = [read] | [write] | [read,EncryptOpt] | [write,DecryptOpt]
                 EncryptOpt = {crypto,{InitFun,EncryptFun,CloseFun}}
                 DecryptOpt = {crypto,{InitFun,DecryptFun}}
                 InitFun = (fun() -> {ok,CryptoState}) | (fun() -> {ok,CryptoState,ChunkSize})
                 CryptoState = any()
                 ChunkSize = undefined | pos_integer()
                 EncryptFun = (fun(PlainBin,CryptoState) -> EncryptResult)
                 EncryptResult = {ok,EncryptedBin,CryptoState} | {ok,EncryptedBin,CryptoState,ChunkSize}
                 PlainBin = binary()
                 EncryptedBin = binary()
                 DecryptFun = (fun(EncryptedBin,CryptoState) -> DecryptResult)
                 DecryptResult = {ok,PlainBin,CryptoState} | {ok,PlainBin,CryptoState,ChunkSize}
                 CloseFun = (fun(PlainBin,CryptoState) -> {ok,EncryptedBin})
                 Timeout = timeout()
                 Reason = term()

              Opens a handle to a tar file on the server, associated with ChannelPid. The handle can be used for
              remote tar creation and extraction, as defined by the erl_tar:init/3 function.

              For code exampel see Section SFTP Client with TAR Compression and  Encryption  in  the  ssh  Users
              Guide.

              The  crypto  mode  option is applied to the generated stream of bytes prior to sending them to the
              SFTP server. This is intended for encryption but can be used for other purposes.

              The InitFun is applied once prior to any other crypto operation. The returned CryptoState is  then
              folded  into repeated applications of the EncryptFun or DecryptFun. The binary returned from those
              funs are sent further to the remote SFTP server. Finally, if doing  encryption,  the  CloseFun  is
              applied  to  the  last  piece  of  data.  The  CloseFun is responsible for padding (if needed) and
              encryption of that last piece.

              The ChunkSize defines the size of the PlainBins that EncodeFun is applied to. If the ChunkSize  is
              undefined, the size of the PlainBins varies, because this is intended for stream crypto, whereas a
              fixed  ChunkSize  is  intended  for block crypto. ChunkSizes can be changed in the return from the
              EncryptFun or DecryptFun. The value can be changed between pos_integer() and undefined.

       position(ChannelPid, Handle, Location) ->
       position(ChannelPid, Handle, Location, Timeout) -> {ok, NewPosition} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Location = Offset | {bof, Offset} | {cur, Offset} | {eof, Offset} | bof | cur | eof
                 Offset = integer()
                 Timeout = timeout()
                 NewPosition = integer()
                 Reason = term()

              Sets the file position of the file referenced by Handle. Returns {ok, NewPosition} (as an absolute
              offset) if successful, otherwise {error, Reason}. Location is one of the following:

                Offset:
                  The same as {bof, Offset}.

                {bof, Offset}:
                  Absolute offset.

                {cur, Offset}:
                  Offset from the current position.

                {eof, Offset}:
                  Offset from the end of file.

                bof | cur | eof:
                  The same as eariler with Offset 0, that is, {bof, 0} | {cur, 0} | {eof, 0}.

       pread(ChannelPid, Handle, Position, Len) ->
       pread(ChannelPid, Handle, Position, Len, Timeout) -> {ok, Data} | eof | {error, Error}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Len = integer()
                 Timeout = timeout()
                 Data = string() | binary()
                 Reason = term()

              The pread function reads from a specified position, combining the position and read functions.

              ssh_sftp:read/4

       pwrite(ChannelPid, Handle, Position, Data) -> ok
       pwrite(ChannelPid, Handle, Position, Data, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Data = iolist()
                 Timeout = timeout()
                 Reason = term()

              The pread function writes to a specified position, combining the position and write functions.

              ssh_sftp:write/3

       read(ChannelPid, Handle, Len) ->
       read(ChannelPid, Handle, Len, Timeout) -> {ok, Data} | eof | {error, Error}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Len = integer()
                 Timeout = timeout()
                 Data = string() | binary()
                 Reason = term()

              Reads Len bytes from the file referenced by Handle. Returns {ok, Data}, eof, or  {error,  Reason}.
              If the file is opened with binary, Data is a binary, otherwise it is a string.

              If  the  file  is  read  past eof, only the remaining bytes are read and returned. If no bytes are
              read, eof is returned.

       read_file(ChannelPid, File) ->
       read_file(ChannelPid, File, Timeout) -> {ok, Data} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 File = string()
                 Data = binary()
                 Timeout = timeout()
                 Reason = term()

              Reads a file from the server, and returns the data in a binary, like file:read_file/1

       read_file_info(ChannelPid, Name) ->
       read_file_info(ChannelPid, Name, Timeout) -> {ok, FileInfo} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Handle = term()
                 Timeout = timeout()
                 FileInfo = record()
                 Reason = term()

              Returns a file_info record from the file specified by Name or Handle, like file:read_file_info/2

       read_link(ChannelPid, Name) ->
       read_link(ChannelPid, Name, Timeout) -> {ok, Target} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Target = string()
                 Reason = term()

              Reads the link target from the symbolic link specified by name, like file:read_link/1

       read_link_info(ChannelPid, Name) -> {ok, FileInfo} | {error, Reason}
       read_link_info(ChannelPid, Name, Timeout) -> {ok, FileInfo} | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Handle = term()
                 Timeout = timeout()
                 FileInfo = record()
                 Reason = term()

              Returns  a  file_info  record  from  the  symbolic  link  specified  by  Name  or   Handle,   like
              file:read_link_info/2

       rename(ChannelPid, OldName, NewName) ->
       rename(ChannelPid, OldName, NewName, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 OldName = string()
                 NewName = string()
                 Timeout = timeout()
                 Reason = term()

              Renames a file named OldName and gives it the name NewName, like file:rename/2

       start_channel(ConnectionRef) ->
       start_channel(ConnectionRef, Options) ->
       start_channel(Host, Options) ->
       start_channel(Host, Port, Options) -> {ok, Pid} | {ok, Pid, ConnectionRef} | {error, Reason}

              Types:

                 Host = string()
                 ConnectionRef = ssh_connection_ref()
                 Port = integer()
                 Options = [{Option, Value}]
                 Reason = term()

              If  no  connection  reference  is  provided,  a  connection  is  set up, and the new connection is
              returned. An SSH channel process is started to handle the communication with the SFTP server.  The
              returned pid for this process is to be used as input to all other API functions in this module.

              Options:

                {timeout, timeout()}:
                  The time-out is passed to the ssh_channel start function, and defaults to infinity.

                {sftp_vsn, integer()}:
                  Desired  SFTP  protocol  version. The actual version is the minimum of the desired version and
                  the maximum supported versions by the SFTP server.

              All other options are directly passed to ssh:connect/3 or  ignored  if  a  connection  is  already
              provided.

       stop_channel(ChannelPid) -> ok

              Types:

                 ChannelPid = pid()

              Stops an SFTP channel. Does not close the SSH connection. Use ssh:close/1 to close it.

       write(ChannelPid, Handle, Data) ->
       write(ChannelPid, Handle, Data, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Handle = term()
                 Position = integer()
                 Data = iolist()
                 Timeout = timeout()
                 Reason = term()

              Writes  data to the file referenced by Handle. The file is to be opened with write or append flag.
              Returns ok if successful or {error, Reason} otherwise.

              Typical error reasons:

                ebadf:
                  File is not opened for writing.

                enospc:
                  No space is left on the device.

       write_file(ChannelPid, File, Iolist) ->
       write_file(ChannelPid, File, Iolist, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 File = string()
                 Iolist = iolist()
                 Timeout = timeout()
                 Reason = term()

              Writes a file to the server, like file:write_file/2 The file is created if it does not exist.  The
              file is overwritten if it exists.

       write_file_info(ChannelPid, Name, Info) ->
       write_file_info(ChannelPid, Name, Info, Timeout) -> ok | {error, Reason}

              Types:

                 ChannelPid = pid()
                 Name = string()
                 Info = record()
                 Timeout = timeout()
                 Reason = term()

              Writes   file   information  from  a  file_info  record  to  the  file  specified  by  Name,  like
              file:write_file_info/[2,3]

Ericsson AB                                         ssh 4.2.2                                     ssh_sftp(3erl)