Help us shape the future of Go! Take the 2026 Go Developer Survey

sftp

package
v1.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2025 License: MIT Imports: 32 Imported by: 0

Documentation

Overview

Package sftp provides a filesystem interface using github.com/pkg/sftp

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFs

func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, error)

NewFs creates a new Fs object from the name and root. It connects to the host specified in the config file.

func NewFsWithConnection

func NewFsWithConnection(ctx context.Context, f *Fs, name string, root string, m configmap.Mapper, opt *Options, sshConfig *ssh.ClientConfig) (fs.Fs, error)

NewFsWithConnection creates a new Fs object from the name and root and an ssh.ClientConfig. It connects to the host specified in the ssh.ClientConfig

Types

type Fs

type Fs struct {
	// contains filtered or unexported fields
}

Fs stores the interface to the remote SFTP files

func (*Fs) About

func (f *Fs) About(ctx context.Context) (*fs.Usage, error)

About gets usage stats

func (*Fs) Copy

func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object, error)

Copy server side copies a remote sftp file object using hardlinks

func (*Fs) DirMove

func (f *Fs) DirMove(ctx context.Context, src fs.Fs, srcRemote, dstRemote string) error

DirMove moves src, srcRemote to this remote at dstRemote using server-side move operations.

Will only be called if src.Fs().Name() == f.Name()

If it isn't possible then return fs.ErrorCantDirMove

If destination exists then return fs.ErrorDirExists

func (*Fs) DirSetModTime

func (f *Fs) DirSetModTime(ctx context.Context, dir string, modTime time.Time) error

DirSetModTime sets the directory modtime for dir

func (*Fs) Features

func (f *Fs) Features() *fs.Features

Features returns the optional features of this Fs

func (*Fs) Hashes

func (f *Fs) Hashes() hash.Set

Hashes returns the supported hash types of the filesystem

func (*Fs) List

func (f *Fs) List(ctx context.Context, dir string) (entries fs.DirEntries, err error)

List the objects and directories in dir into entries. The entries can be returned in any order but should be for a complete directory.

dir should be "" to list the root, and should not have trailing slashes.

This should return ErrDirNotFound if the directory isn't found.

func (*Fs) Mkdir

func (f *Fs) Mkdir(ctx context.Context, dir string) error

Mkdir makes the root directory of the Fs object

func (*Fs) Move

func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object, error)

Move renames a remote sftp file object

func (*Fs) Name

func (f *Fs) Name() string

Name returns the configured name of the file system

func (*Fs) NewObject

func (f *Fs) NewObject(ctx context.Context, remote string) (fs.Object, error)

NewObject creates a new remote sftp file object

func (*Fs) Precision

func (f *Fs) Precision() time.Duration

Precision is the remote sftp file system's modtime precision, which we have no way of knowing. We estimate at 1s

func (*Fs) Put

func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error)

Put data from <in> into a new remote sftp file object described by <src.Remote()> and <src.ModTime(ctx)>

func (*Fs) PutStream

func (f *Fs) PutStream(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) (fs.Object, error)

PutStream uploads to the remote path with the modTime given of indeterminate size

func (*Fs) Rmdir

func (f *Fs) Rmdir(ctx context.Context, dir string) error

Rmdir removes the root directory of the Fs object

func (*Fs) Root

func (f *Fs) Root() string

Root returns the root for the filesystem

func (*Fs) Shutdown

func (f *Fs) Shutdown(ctx context.Context) error

Shutdown the backend, closing any background tasks and any cached connections.

func (*Fs) String

func (f *Fs) String() string

String returns the URL for the filesystem

type Object

type Object struct {
	// contains filtered or unexported fields
}

Object is a remote SFTP file that has been stat'd (so it exists, but is not necessarily open for reading)

func (*Object) Fs

func (o *Object) Fs() fs.Info

Fs is the filesystem this remote sftp file object is located within

func (*Object) Hash

func (o *Object) Hash(ctx context.Context, r hash.Type) (string, error)

Hash returns the selected checksum of the file If no checksum is available it returns ""

func (*Object) ModTime

func (o *Object) ModTime(ctx context.Context) time.Time

ModTime returns the modification time of the remote sftp file

func (*Object) Open

func (o *Object) Open(ctx context.Context, options ...fs.OpenOption) (in io.ReadCloser, err error)

Open a remote sftp file object for reading. Seek is supported

func (*Object) Remote

func (o *Object) Remote() string

Remote the name of the remote SFTP file, relative to the fs root

func (*Object) Remove

func (o *Object) Remove(ctx context.Context) error

Remove a remote sftp file object

func (*Object) SetModTime

func (o *Object) SetModTime(ctx context.Context, modTime time.Time) error

SetModTime sets the modification and access time to the specified time

it also updates the info field

func (*Object) Size

func (o *Object) Size() int64

Size returns the size in bytes of the remote sftp file

func (*Object) Storable

func (o *Object) Storable() bool

Storable returns whether the remote sftp file is a regular file (not a directory, symbolic link, block device, character device, named pipe, etc.)

func (*Object) String

func (o *Object) String() string

String returns the URL to the remote SFTP file

func (*Object) Update

func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption) error

Update a remote sftp file using the data <in> and ModTime from <src>

type Options

type Options struct {
	Host                    string          `config:"host"`
	User                    string          `config:"user"`
	Port                    string          `config:"port"`
	Pass                    string          `config:"pass"`
	KeyPem                  string          `config:"key_pem"`
	KeyFile                 string          `config:"key_file"`
	KeyFilePass             string          `config:"key_file_pass"`
	PubKeyFile              string          `config:"pubkey_file"`
	KnownHostsFile          string          `config:"known_hosts_file"`
	KeyUseAgent             bool            `config:"key_use_agent"`
	UseInsecureCipher       bool            `config:"use_insecure_cipher"`
	DisableHashCheck        bool            `config:"disable_hashcheck"`
	AskPassword             bool            `config:"ask_password"`
	PathOverride            string          `config:"path_override"`
	SetModTime              bool            `config:"set_modtime"`
	ShellType               string          `config:"shell_type"`
	Md5sumCommand           string          `config:"md5sum_command"`
	Sha1sumCommand          string          `config:"sha1sum_command"`
	SkipLinks               bool            `config:"skip_links"`
	Subsystem               string          `config:"subsystem"`
	ServerCommand           string          `config:"server_command"`
	UseFstat                bool            `config:"use_fstat"`
	DisableConcurrentReads  bool            `config:"disable_concurrent_reads"`
	DisableConcurrentWrites bool            `config:"disable_concurrent_writes"`
	IdleTimeout             fs.Duration     `config:"idle_timeout"`
	ChunkSize               fs.SizeSuffix   `config:"chunk_size"`
	Concurrency             int             `config:"concurrency"`
	Connections             int             `config:"connections"`
	SetEnv                  fs.SpaceSepList `config:"set_env"`
	Ciphers                 fs.SpaceSepList `config:"ciphers"`
	KeyExchange             fs.SpaceSepList `config:"key_exchange"`
	MACs                    fs.SpaceSepList `config:"macs"`
	HostKeyAlgorithms       fs.SpaceSepList `config:"host_key_algorithms"`
	SSH                     fs.SpaceSepList `config:"ssh"`
	SocksProxy              string          `config:"socks_proxy"`
	CopyIsHardlink          bool            `config:"copy_is_hardlink"`
}

Options defines the configuration for this backend

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL