This module implements an SFTP (SSH FTP) client. SFTP is a secure, encrypted file transfer service available for SSH.
The errors returned are from the SFTP server, and are often not posix error codes.
connect(CM) -> {ok, Pid} | {error, Reason}
connect(Host, Options) -> {ok, Pid} | {error, Reason}
connect(Host, Port, Options) -> {ok, Pid} | {error, Reason}
Types:
Host = string()
CM = pid()
Port = integer()
Options = [{Option, Value}]
Option = atom()
Value = term()
Reason = term()
Connects to an SFTP server. A gen_server
is started
and returned if connection is successful. This server is used
to perform SFTP commands on the server.
For options, see ssh_cm:connect
.
read_file(Server, File) -> {ok, Data} | {error, Reason}
Types:
Server = pid()
File = string()
Data = binary()
Reason = term()
Reads a file from the server, and returns the data in a binary,
like file:read_file/1
.
write_file(Server, File, Iolist) -> ok | {error, Reason}
Types:
Server = pid()
File = string()
Data = binary()
Reason = term()
Writes a file to the server, like file:write_file/2
.
The file is created if it's not there.
list_dir(Server, Path) -> {ok, Filenames} | {error, Reason}
Types:
Server = pid()
Path = string()
Filenames = [Filename]
Filename = string()
Reason = term()
Lists the given directory on the server, returning the filenames as a list of strings.
open(Server, File, Mode) -> {ok, Handle} | {error, Reason}
Types:
Server = pid()
File = string()
Mode = [Modeflag]
Modeflag = read | write | creat | trunc | append | binary
Handle = term()
Reason = term()
Opens a file on the server, and returns a handle that is used for reading or writing.
opendir(Server, Path) -> {ok, Handle} | {error, Reason}
Types:
Server = pid()
Path = string()
Reason = term()
Opens a handle to a directory on the server, the handle is used for reading directory contents.
close(Server, Handle) -> ok | {error, Reason}
Types:
Server = pid()
Handle = term()
Reason = term()
Closes a handle to an open file or directory on the server.
read(Server, Handle, Len) ->
{ok, Data} | eof | {error, Error}
pread(Server, Handle, Position, Length) ->
{ok, Data} | eof | {error, Error}
Types:
Server = pid()
Handle = term()
Position = integer()
Len = integer()
Data = string() | binary()
Reason = term()
Reads Len
bytes from the file referenced by
Handle
. Returns {ok, Data}
, or 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
will be read and returned. If no bytes are read, eof
is returned.
The pread
function reads from a specified position,
combining the position
and read
functions.
aread(Server, Handle, Len) -> {async, N} | {error, Error}
apread(Server, Handle, Position, Length) ->
{async, N} | {error, Error}
Types:
Server = 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}
,
or eof
, or {error, Error}
.
The apread
function reads from a specified position,
combining the position
and aread
functions.
write(Server, Handle, Data) -> ok | {error, Error}
pwrite(Server, Handle, Position, Data) -> ok | {error, Error}
Types:
Server = pid()
Handle = term()
Position = integer()
Data = iolist()
Reason = term()
Write data
to the file referenced by Handle
.
The file should be opened with write
or append
flag. Returns ok
if successful and {error, Reason}
otherwise.
Typical error reasons are:
ebadf
enospc
awrite(Server, Handle, Data) -> ok | {error, Error}
apwrite(Server, Handle, Position, Data) ->
ok | {error, Error}
Types:
Server = pid()
Handle = term()
Position = integer()
Len = integer()
Data = binary()
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}
.
The apwrite
writes on a specified position, combining
the position
and awrite
operations.
position(Server, Handle, Location) ->
{ok, NewPosition | {error, Error}
Types:
Server = pid()
Handle = term()
Location = Offset | {bof, Offset} | {cur, Offset}
| {eof, Offset} | bof | cur | eof
Offset = int()
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
{bof, Offset}
.{bof, Offset}
{cur, Offset}
{eof, Offset}
bof | cur | eof
Offset
0.read_file_info(Server, Name) ->
{ok, FileInfo} | {error, Reason}
get_file_info(Server, Handle) ->
{ok, FileInfo} | {error, Reason}
Types:
Server = pid()
Name = string()
Handle = term()
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_info(Server, Name) ->
{ok, FileInfo} | {error, Reason}
Types:
Server = pid()
Name = string()
Handle = term()
FileInfo = record()
Reason = term()
Returns a file_info
record from the symbolic
link specified by Name
or Handle
, like
file:read_link_info/2
.
write_file_info(Server, Name, Info) -> ok | {error, Reason}
Types:
Server = pid()
Name = string()
Info = record()
Reason = term()
Writes file information from a file_info
record to the
file specified by Name
, like file:write_file_info
.
read_link(Server, Name) -> {ok, Target} | {error, Reason}
Types:
Server = pid()
Name = string()
Target = string()
Reason = term()
Read the link target from the symbolic link specified
by name
, like file:read_link/1
.
make_symlink(Server, Name, Target) ->
ok | {error, Reason}
Types:
Server = pid()
Name = string()
Target = string()
Reason = term()
Creates a symbolic link pointing to Target
with the
name Name
, like file:make_symlink/2
.
rename(Server, OldName, NewName) -> ok | {error, Reason}
Types:
Server = pid()
OldName = string()
NewName = string()
Reason = term()
Renames a file named OldName
, and gives it the name
NewName
, like file:rename/2
delete(Server, Name) -> ok | {error, Reason}
Types:
Server = pid()
Name = string()
Reason = term()
Deletes the file specified by Name
, like
file:delete/1
make_dir(Server, Name) -> ok | {error, Reason}
Types:
Server = pid()
Name = string()
Reason = term()
Creates a directory specified by Name
. Name
should
be a full path to a new directory. The directory can only be
created in an existing directory.
del_dir(Server, Name) -> ok | {error, Reason}
Types:
Server = pid()
Name = string()
Reason = term()
Deletes a directory specified by Name
. The directory
should be empty, and
Types:
Server = pid()
Stops the sftp
session, closing the connection. Any
open files on the server will be closed.