package sync import ( "io" "os" "time" ) type Object struct { Path string IsDir bool Size int64 Modified time.Time ETag string } type Target interface { Inventory() ([]*Object, error) Dir(path string) ([]*Object, error) Mkdir(path string) error ReadStream(path string) (io.ReadCloser, error) WriteStream(path string, stream io.Reader, mode os.FileMode) error WriteStreamWithModTime(path string, stream io.Reader, mode os.FileMode, modTime time.Time) error Move(src, dest string) error Rm(path string) error SetModificationTime(path string, mtime time.Time) error }