mirror of
https://github.com/rclone/rclone
synced 2024-11-21 22:50:16 +01:00
docs: spelling: server-side
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
This commit is contained in:
parent
87e54f2dde
commit
bbe7eb35f1
@ -680,7 +680,7 @@ func (f *Fs) Mkdir(ctx context.Context, dir string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -745,7 +745,7 @@ func (f *Fs) DirCacheFlush() {
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
@ -893,7 +893,7 @@ func (f *Fs) Hashes() hash.Set {
|
||||
return hash.Set(hash.MD5)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -976,7 +976,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return f.deleteContainer(ctx, container)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -121,7 +121,7 @@ This value should be set no larger than 4.657GiB (== 5GB).`,
|
||||
Name: "copy_cutoff",
|
||||
Help: `Cutoff for switching to multipart copy
|
||||
|
||||
Any files larger than this that need to be server side copied will be
|
||||
Any files larger than this that need to be server-side copied will be
|
||||
copied in chunks of this size.
|
||||
|
||||
The minimum is 0 and the maximum is 4.6GB.`,
|
||||
@ -1234,7 +1234,7 @@ func (f *Fs) CleanUp(ctx context.Context) error {
|
||||
return f.purge(ctx, "", true)
|
||||
}
|
||||
|
||||
// copy does a server side copy from dstObj <- srcObj
|
||||
// copy does a server-side copy from dstObj <- srcObj
|
||||
//
|
||||
// If newInfo is nil then the metadata will be copied otherwise it
|
||||
// will be replaced with newInfo
|
||||
@ -1291,7 +1291,7 @@ func (f *Fs) copy(ctx context.Context, dstObj *Object, srcObj *Object, newInfo *
|
||||
return dstObj.decodeMetaDataFileInfo(&response)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -791,7 +791,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return time.Second
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -909,7 +909,7 @@ func (f *Fs) About(ctx context.Context) (usage *fs.Usage, err error) {
|
||||
return usage, nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -945,7 +945,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
6
backend/cache/cache.go
vendored
6
backend/cache/cache.go
vendored
@ -1236,7 +1236,7 @@ func (f *Fs) Rmdir(ctx context.Context, dir string) error {
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
func (f *Fs) DirMove(ctx context.Context, src fs.Fs, srcRemote, dstRemote string) error {
|
||||
fs.Debugf(f, "move dir '%s'/'%s' -> '%s'/'%s'", src.Root(), srcRemote, f.Root(), dstRemote)
|
||||
|
||||
@ -1517,7 +1517,7 @@ func (f *Fs) PutStream(ctx context.Context, in io.Reader, src fs.ObjectInfo, opt
|
||||
return f.put(ctx, in, src, options, do)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object, error) {
|
||||
fs.Debugf(f, "copy obj '%s' -> '%s'", src, remote)
|
||||
|
||||
@ -1594,7 +1594,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
return co, nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object, error) {
|
||||
fs.Debugf(f, "moving obj '%s' -> %s", src, remote)
|
||||
|
||||
|
@ -253,7 +253,7 @@ func NewFs(name, rpath string, m configmap.Mapper) (fs.Fs, error) {
|
||||
return nil, errors.Wrapf(err, "failed to make remote %q to wrap", baseName+remotePath)
|
||||
}
|
||||
if !operations.CanServerSideMove(baseFs) {
|
||||
return nil, errors.New("can't use chunker on a backend which doesn't support server side move or copy")
|
||||
return nil, errors.New("can't use chunker on a backend which doesn't support server-side move or copy")
|
||||
}
|
||||
|
||||
f := &Fs{
|
||||
@ -1578,7 +1578,7 @@ func (f *Fs) okForServerSide(ctx context.Context, src fs.Object, opName string)
|
||||
return
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1599,7 +1599,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
return f.copyOrMove(ctx, obj, remote, baseCopy, md5, sha1, "copy")
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1644,7 +1644,7 @@ func (f *Fs) baseMove(ctx context.Context, src fs.Object, remote string, delMode
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -76,7 +76,7 @@ NB If filename_encryption is "off" then this option will do nothing.`,
|
||||
}, {
|
||||
Name: "server_side_across_configs",
|
||||
Default: false,
|
||||
Help: `Allow server side operations (eg copy) to work across different crypt configs.
|
||||
Help: `Allow server-side operations (eg copy) to work across different crypt configs.
|
||||
|
||||
Normally this option is not what you want, but if you have two crypts
|
||||
pointing to the same backend you can use it.
|
||||
@ -444,7 +444,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return do(ctx, f.cipher.EncryptDirName(dir))
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -469,7 +469,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
return f.newObject(oResult), nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -495,7 +495,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -435,9 +435,9 @@ need to use --ignore size also.`,
|
||||
}, {
|
||||
Name: "server_side_across_configs",
|
||||
Default: false,
|
||||
Help: `Allow server side operations (eg copy) to work across different drive configs.
|
||||
Help: `Allow server-side operations (eg copy) to work across different drive configs.
|
||||
|
||||
This can be useful if you wish to do a server side copy between two
|
||||
This can be useful if you wish to do a server-side copy between two
|
||||
different Google drives. Note that this isn't enabled by default
|
||||
because it isn't easy to tell if it will work between any two
|
||||
configurations.`,
|
||||
@ -2273,7 +2273,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return time.Millisecond
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -2449,7 +2449,7 @@ func (f *Fs) About(ctx context.Context) (*fs.Usage, error) {
|
||||
return usage, nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -2550,7 +2550,7 @@ func (f *Fs) PublicLink(ctx context.Context, remote string, expire fs.Duration,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
@ -3129,7 +3129,7 @@ The path should end with a / to indicate copy the file as named to
|
||||
this directory. If it doesn't end with a / then the last path
|
||||
component will be used as the file name.
|
||||
|
||||
If the destination is a drive backend then server side copying will be
|
||||
If the destination is a drive backend then server-side copying will be
|
||||
attempted if possible.
|
||||
|
||||
Use the -i flag to see what would be copied before copying.
|
||||
|
@ -903,7 +903,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return time.Second
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -964,7 +964,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) (err error) {
|
||||
return f.purgeCheck(ctx, dir, false)
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1069,7 +1069,7 @@ func (f *Fs) PublicLink(ctx context.Context, remote string, expire fs.Duration,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -729,7 +729,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -813,7 +813,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return time.Nanosecond
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -1097,7 +1097,7 @@ func (f *Fs) copyOrMove(ctx context.Context, method, src, dest string) (info *ap
|
||||
return info, nil
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1127,7 +1127,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
//return f.newObjectWithInfo(remote, &result)
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1158,7 +1158,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -637,7 +637,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return os.RemoveAll(dir)
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -701,7 +701,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -1227,7 +1227,7 @@ func (f *Fs) delete(ctx context.Context, path string, hardDelete bool) error {
|
||||
}
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
// This is stored with the remote path given.
|
||||
// It returns the destination Object and a possible error.
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
@ -1322,7 +1322,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
return dstObj, err
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
// This is stored with the remote path given.
|
||||
// It returns the destination Object and a possible error.
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
@ -1409,7 +1409,7 @@ func (f *Fs) moveItemBin(ctx context.Context, srcPath, dstPath, opName string) e
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// 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
|
||||
|
@ -11,7 +11,7 @@ Improvements:
|
||||
* Uploads could be done in parallel
|
||||
* Downloads would be more efficient done in one go
|
||||
* Uploads would be more efficient with bigger chunks
|
||||
* Looks like mega can support server side copy, but it isn't implemented in go-mega
|
||||
* Looks like mega can support server-side copy, but it isn't implemented in go-mega
|
||||
* Upload can set modtime... - set as int64_t - can set ctime and mtime?
|
||||
*/
|
||||
|
||||
@ -699,7 +699,7 @@ func (f *Fs) move(dstRemote string, srcFs *Fs, srcRemote string, info *mega.Node
|
||||
dstDirNode, err = dstFs.mkdir(absRoot, dstParent)
|
||||
}
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "server side move failed to make dst parent dir")
|
||||
return errors.Wrap(err, "server-side move failed to make dst parent dir")
|
||||
}
|
||||
|
||||
if srcRemote != "" {
|
||||
@ -712,7 +712,7 @@ func (f *Fs) move(dstRemote string, srcFs *Fs, srcRemote string, info *mega.Node
|
||||
srcDirNode, err = f.findDir(absRoot, srcParent)
|
||||
}
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "server side move failed to lookup src parent dir")
|
||||
return errors.Wrap(err, "server-side move failed to lookup src parent dir")
|
||||
}
|
||||
|
||||
// move the object into its new directory if required
|
||||
@ -723,7 +723,7 @@ func (f *Fs) move(dstRemote string, srcFs *Fs, srcRemote string, info *mega.Node
|
||||
return shouldRetry(err)
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "server side move failed")
|
||||
return errors.Wrap(err, "server-side move failed")
|
||||
}
|
||||
}
|
||||
|
||||
@ -737,7 +737,7 @@ func (f *Fs) move(dstRemote string, srcFs *Fs, srcRemote string, info *mega.Node
|
||||
return shouldRetry(err)
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "server side rename failed")
|
||||
return errors.Wrap(err, "server-side rename failed")
|
||||
}
|
||||
}
|
||||
|
||||
@ -746,7 +746,7 @@ func (f *Fs) move(dstRemote string, srcFs *Fs, srcRemote string, info *mega.Node
|
||||
return nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -781,7 +781,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -462,7 +462,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return time.Nanosecond
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -274,9 +274,9 @@ listing, set this option.`,
|
||||
}, {
|
||||
Name: "server_side_across_configs",
|
||||
Default: false,
|
||||
Help: `Allow server side operations (eg copy) to work across different onedrive configs.
|
||||
Help: `Allow server-side operations (eg copy) to work across different onedrive configs.
|
||||
|
||||
This can be useful if you wish to do a server side copy between two
|
||||
This can be useful if you wish to do a server-side copy between two
|
||||
different Onedrives. Note that this isn't enabled by default
|
||||
because it isn't easy to tell if it will work between any two
|
||||
configurations.`,
|
||||
@ -1006,7 +1006,7 @@ func (f *Fs) waitForJob(ctx context.Context, location string, o *Object) error {
|
||||
return errors.Errorf("async operation didn't complete after %v", fs.Config.Timeout)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1097,7 +1097,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return f.purgeCheck(ctx, dir, false)
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1162,7 +1162,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -338,7 +338,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return time.Second
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -402,7 +402,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
return dstObj, nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -460,7 +460,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -622,7 +622,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return time.Second
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -705,7 +705,7 @@ func (f *Fs) CleanUp(ctx context.Context) error {
|
||||
})
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -755,7 +755,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -682,7 +682,7 @@ func (f *Fs) move(ctx context.Context, isFile bool, id, oldLeaf, newLeaf, oldDir
|
||||
return nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -718,7 +718,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -525,7 +525,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) (err error) {
|
||||
return f.purgeCheck(ctx, dir, false)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -564,7 +564,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (o fs.Objec
|
||||
return f.NewObject(ctx, remote)
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -604,7 +604,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (o fs.Objec
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -428,7 +428,7 @@ func (f *Fs) Put(ctx context.Context, in io.Reader, src fs.ObjectInfo, options .
|
||||
return fsObj, fsObj.Update(ctx, in, src, options...)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -799,7 +799,7 @@ This ACL is used for creating objects and if bucket_acl isn't set, for creating
|
||||
|
||||
For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
|
||||
|
||||
Note that this ACL is applied when server side copying objects as S3
|
||||
Note that this ACL is applied when server-side copying objects as S3
|
||||
doesn't copy the ACL from the source but rather writes a fresh one.`,
|
||||
Examples: []fs.OptionExample{{
|
||||
Value: "default",
|
||||
@ -1055,7 +1055,7 @@ large file of a known size to stay below this number of chunks limit.
|
||||
Name: "copy_cutoff",
|
||||
Help: `Cutoff for switching to multipart copy
|
||||
|
||||
Any files larger than this that need to be server side copied will be
|
||||
Any files larger than this that need to be server-side copied will be
|
||||
copied in chunks of this size.
|
||||
|
||||
The minimum is 0 and the maximum is 5GB.`,
|
||||
@ -2139,7 +2139,7 @@ func pathEscape(s string) string {
|
||||
return strings.Replace(rest.URLPathEscape(s), "+", "%2B", -1)
|
||||
}
|
||||
|
||||
// copy does a server side copy
|
||||
// copy does a server-side copy
|
||||
//
|
||||
// It adds the boiler plate to the req passed in and calls the s3
|
||||
// method
|
||||
@ -2273,7 +2273,7 @@ func (f *Fs) copyMultipart(ctx context.Context, copyReq *s3.CopyObjectInput, dst
|
||||
})
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -663,7 +663,7 @@ func (f *Fs) ListR(ctx context.Context, dir string, callback fs.ListRCallback) e
|
||||
|
||||
// ==================== Optional Interface fs.Copier ====================
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -714,7 +714,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
|
||||
// ==================== Optional Interface fs.Mover ====================
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -804,7 +804,7 @@ func (f *Fs) adjustDestination(ctx context.Context, libraryID, srcFilename, dstP
|
||||
// ==================== Optional Interface fs.DirMover ====================
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -895,7 +895,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -964,7 +964,7 @@ func (f *Fs) move(ctx context.Context, isFile bool, id, oldLeaf, newLeaf, oldDir
|
||||
return item, nil
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1006,7 +1006,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
@ -1034,7 +1034,7 @@ func (f *Fs) DirMove(ctx context.Context, src fs.Fs, srcRemote, dstRemote string
|
||||
return nil
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -837,7 +837,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return fs.ModTimeNotSupported
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -923,7 +923,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return f.purgeCheck(ctx, dir, false)
|
||||
}
|
||||
|
||||
// moveFile moves a file server side
|
||||
// moveFile moves a file server-side
|
||||
func (f *Fs) moveFile(ctx context.Context, id, leaf, directoryID string) (info *api.File, err error) {
|
||||
opts := rest.Opts{
|
||||
Method: "PUT",
|
||||
@ -951,7 +951,7 @@ func (f *Fs) moveFile(ctx context.Context, id, leaf, directoryID string) (info *
|
||||
return info, nil
|
||||
}
|
||||
|
||||
// moveDir moves a folder server side
|
||||
// moveDir moves a folder server-side
|
||||
func (f *Fs) moveDir(ctx context.Context, id, leaf, directoryID string) (err error) {
|
||||
// Move the object
|
||||
opts := rest.Opts{
|
||||
@ -970,7 +970,7 @@ func (f *Fs) moveDir(ctx context.Context, id, leaf, directoryID string) (err err
|
||||
})
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -1006,7 +1006,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -871,7 +871,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return f.Rmdir(ctx, dir)
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
|
@ -194,7 +194,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return errs.Err()
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -234,7 +234,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
return wo.(*Object), err
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -298,7 +298,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -832,7 +832,7 @@ func (f *Fs) Precision() time.Duration {
|
||||
return f.precision
|
||||
}
|
||||
|
||||
// Copy or Move src to this remote using server side copy operations.
|
||||
// Copy or Move src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -886,7 +886,7 @@ func (f *Fs) copyOrMove(ctx context.Context, src fs.Object, remote string, metho
|
||||
return dstObj, nil
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -908,7 +908,7 @@ func (f *Fs) Purge(ctx context.Context, dir string) error {
|
||||
return f.purgeCheck(ctx, dir, false)
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -922,7 +922,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -678,7 +678,7 @@ func (f *Fs) copyOrMove(ctx context.Context, method, src, dst string, overwrite
|
||||
return nil
|
||||
}
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -708,7 +708,7 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
return f.NewObject(ctx, remote)
|
||||
}
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -739,7 +739,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
}
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -29,15 +29,15 @@ var commandDefinition = &cobra.Command{
|
||||
Long: `
|
||||
Moves the contents of the source directory to the destination
|
||||
directory. Rclone will error if the source and destination overlap and
|
||||
the remote does not support a server side directory move operation.
|
||||
the remote does not support a server-side directory move operation.
|
||||
|
||||
If no filters are in use and if possible this will server side move
|
||||
If no filters are in use and if possible this will server-side move
|
||||
` + "`source:path`" + ` into ` + "`dest:path`" + `. After this ` + "`source:path`" + ` will no
|
||||
longer exist.
|
||||
|
||||
Otherwise for each file in ` + "`source:path`" + ` selected by the filters (if
|
||||
any) this will move it into ` + "`dest:path`" + `. If possible a server side
|
||||
move will be used, otherwise it will copy it (server side if possible)
|
||||
any) this will move it into ` + "`dest:path`" + `. If possible a server-side
|
||||
move will be used, otherwise it will copy it (server-side if possible)
|
||||
into ` + "`dest:path`" + ` then delete the original (if no errors on copy) in
|
||||
` + "`source:path`" + `.
|
||||
|
||||
|
@ -37,7 +37,7 @@ verifies checksums at all times. Transfers over limited bandwidth;
|
||||
intermittent connections, or subject to quota can be restarted, from
|
||||
the last good file transferred. You can
|
||||
[check](/commands/rclone_check/) the integrity of your files. Where
|
||||
possible, rclone employs server side transfers to minimise local
|
||||
possible, rclone employs server-side transfers to minimise local
|
||||
bandwidth use and transfers from one provider to another without
|
||||
using local disk.
|
||||
|
||||
|
@ -417,7 +417,7 @@ This value should be set no larger than 4.657GiB (== 5GB).
|
||||
|
||||
Cutoff for switching to multipart copy
|
||||
|
||||
Any files larger than this that need to be server side copied will be
|
||||
Any files larger than this that need to be server-side copied will be
|
||||
copied in chunks of this size.
|
||||
|
||||
The minimum is 0 and the maximum is 4.6GB.
|
||||
|
@ -192,7 +192,7 @@ description: "Rclone Changelog"
|
||||
* Azure Blob
|
||||
* Don't compile on < go1.13 after dependency update (Nick Craig-Wood)
|
||||
* B2
|
||||
* Implement server side copy for files > 5GB (Nick Craig-Wood)
|
||||
* Implement server-side copy for files > 5GB (Nick Craig-Wood)
|
||||
* Cancel in progress multipart uploads and copies on rclone exit (Nick Craig-Wood)
|
||||
* Note that b2's encoding now allows \ but rclone's hasn't changed (Nick Craig-Wood)
|
||||
* Fix transfers when using download_url (Nick Craig-Wood)
|
||||
@ -208,7 +208,7 @@ description: "Rclone Changelog"
|
||||
* Work around drive bug which didn't set modtime of copied docs (Nick Craig-Wood)
|
||||
* Added `--drive-starred-only` to only show starred files (Jay McEntire)
|
||||
* Deprecate `--drive-alternate-export` as it is no longer needed (themylogin)
|
||||
* Fix duplication of Google docs on server side copy (Nick Craig-Wood)
|
||||
* Fix duplication of Google docs on server-side copy (Nick Craig-Wood)
|
||||
* Fix "panic: send on closed channel" when recycling dir entries (Nick Craig-Wood)
|
||||
* Dropbox
|
||||
* Add copyright detector info in limitations section in the docs (Alex Guerrero)
|
||||
@ -798,7 +798,7 @@ all the docs and Edward Barker for helping re-write the front page.
|
||||
* Free objects after they come out of the transfer pipe to save memory (Nick Craig-Wood)
|
||||
* Fix `--files-from without --no-traverse` doing a recursive scan (Nick Craig-Wood)
|
||||
* operations
|
||||
* Fix accounting for server side copies (Nick Craig-Wood)
|
||||
* Fix accounting for server-side copies (Nick Craig-Wood)
|
||||
* Display 'All duplicates removed' only if dedupe successful (Sezal Agrawal)
|
||||
* Display 'Deleted X extra copies' only if dedupe successful (Sezal Agrawal)
|
||||
* accounting
|
||||
@ -997,10 +997,10 @@ all the docs and Edward Barker for helping re-write the front page.
|
||||
* Make all operations work from the root (Nick Craig-Wood)
|
||||
* B2
|
||||
* Implement link sharing (yparitcher)
|
||||
* Enable server side copy to copy between buckets (Nick Craig-Wood)
|
||||
* Enable server-side copy to copy between buckets (Nick Craig-Wood)
|
||||
* Make all operations work from the root (Nick Craig-Wood)
|
||||
* Drive
|
||||
* Fix server side copy of big files (Nick Craig-Wood)
|
||||
* Fix server-side copy of big files (Nick Craig-Wood)
|
||||
* Update API for teamdrive use (Nick Craig-Wood)
|
||||
* Add error for purge with `--drive-trashed-only` (ginvine)
|
||||
* Fichier
|
||||
@ -1094,12 +1094,12 @@ all the docs and Edward Barker for helping re-write the front page.
|
||||
* Support PublicLink (rclone link) of underlying backend (Nick Craig-Wood)
|
||||
* Implement Optional methods SetTier, GetTier (Nick Craig-Wood)
|
||||
* B2
|
||||
* Implement server side copy (Nick Craig-Wood)
|
||||
* Implement server-side copy (Nick Craig-Wood)
|
||||
* Implement SetModTime (Nick Craig-Wood)
|
||||
* Drive
|
||||
* Fix move and copy from TeamDrive to GDrive (Fionera)
|
||||
* Add notes that cleanup works in the background on drive (Nick Craig-Wood)
|
||||
* Add `--drive-server-side-across-configs` to default back to old server side copy semantics by default (Nick Craig-Wood)
|
||||
* Add `--drive-server-side-across-configs` to default back to old server-side copy semantics by default (Nick Craig-Wood)
|
||||
* Add `--drive-size-as-quota` to show storage quota usage for file size (Garry McNulty)
|
||||
* FTP
|
||||
* Add FTP List timeout (Jeff Quinn)
|
||||
@ -1138,7 +1138,7 @@ all the docs and Edward Barker for helping re-write the front page.
|
||||
* use `--disable ListR` to get old behaviour if required
|
||||
* Make `--files-from` traverse the destination unless `--no-traverse` is set (Nick Craig-Wood)
|
||||
* this fixes `--files-from` with Google drive and excessive API use in general.
|
||||
* Make server side copy account bytes and obey `--max-transfer` (Nick Craig-Wood)
|
||||
* Make server-side copy account bytes and obey `--max-transfer` (Nick Craig-Wood)
|
||||
* Add `--create-empty-src-dirs` flag and default to not creating empty dirs (ishuah)
|
||||
* Add client side TLS/SSL flags `--ca-cert`/`--client-cert`/`--client-key` (Nick Craig-Wood)
|
||||
* Implement `--suffix-keep-extension` for use with `--suffix` (Nick Craig-Wood)
|
||||
@ -1173,11 +1173,11 @@ all the docs and Edward Barker for helping re-write the front page.
|
||||
* Ignore malformed `src_last_modified_millis` (Nick Craig-Wood)
|
||||
* Drive
|
||||
* Add `--skip-checksum-gphotos` to ignore incorrect checksums on Google Photos (Nick Craig-Wood)
|
||||
* Allow server side move/copy between different remotes. (Fionera)
|
||||
* Allow server-side move/copy between different remotes. (Fionera)
|
||||
* Add docs on team drives and `--fast-list` eventual consistency (Nestar47)
|
||||
* Fix imports of text files (Nick Craig-Wood)
|
||||
* Fix range requests on 0 length files (Nick Craig-Wood)
|
||||
* Fix creation of duplicates with server side copy (Nick Craig-Wood)
|
||||
* Fix creation of duplicates with server-side copy (Nick Craig-Wood)
|
||||
* Dropbox
|
||||
* Retry blank errors to fix long listings (Nick Craig-Wood)
|
||||
* FTP
|
||||
@ -1390,7 +1390,7 @@ all the docs and Edward Barker for helping re-write the front page.
|
||||
* Fix transfer of files with `+` and `&` in (Nick Craig-Wood)
|
||||
* Fix retries of upload chunks (Nick Craig-Wood)
|
||||
* S3
|
||||
* Set ACL for server side copies to that provided by the user (Nick Craig-Wood)
|
||||
* Set ACL for server-side copies to that provided by the user (Nick Craig-Wood)
|
||||
* Fix role_arn, credential_source, ... (Erik Swanson)
|
||||
* Add config info for Wasabi's US-West endpoint (Henry Ptasinski)
|
||||
* SFTP
|
||||
@ -1433,7 +1433,7 @@ all the docs and Edward Barker for helping re-write the front page.
|
||||
* VFS
|
||||
* Fix race condition detected by serve ftp tests (Nick Craig-Wood)
|
||||
* Add vfs/poll-interval rc command (Fabian Möller)
|
||||
* Enable rename for nearly all remotes using server side Move or Copy (Nick Craig-Wood)
|
||||
* Enable rename for nearly all remotes using server-side Move or Copy (Nick Craig-Wood)
|
||||
* Reduce directory cache cleared by poll-interval (Fabian Möller)
|
||||
* Remove EXPERIMENTAL tags (Nick Craig-Wood)
|
||||
* Local
|
||||
@ -1618,7 +1618,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* Swift
|
||||
* Add `storage_policy` (Ruben Vandamme)
|
||||
* Make it so just `storage_url` or `auth_token` can be overridden (Nick Craig-Wood)
|
||||
* Fix server side copy bug for unusual file names (Nick Craig-Wood)
|
||||
* Fix server-side copy bug for unusual file names (Nick Craig-Wood)
|
||||
* Remove leading / from paths (Nick Craig-Wood)
|
||||
* WebDAV
|
||||
* Ensure we call MKCOL with a URL with a trailing / for QNAP interop (Nick Craig-Wood)
|
||||
@ -1936,7 +1936,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* Update docs to discourage use of v2 auth with CEPH and others
|
||||
* Don't check for bucket/container presence if listing was OK
|
||||
* this makes rclone do one less request per invocation
|
||||
* Fix server side copy and set modtime on files with + in
|
||||
* Fix server-side copy and set modtime on files with + in
|
||||
* SFTP
|
||||
* Add option to disable remote hash check command execution (Jon Fautley)
|
||||
* Add `--sftp-ask-password` flag to prompt for password when needed (Leo R. Lundgren)
|
||||
@ -2073,7 +2073,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* Fix "entry doesn't belong in directory" error
|
||||
* Stop using deprecated API methods
|
||||
* Swift
|
||||
* Fix server side copy to empty container with `--fast-list`
|
||||
* Fix server-side copy to empty container with `--fast-list`
|
||||
* Google Drive
|
||||
* Change the default for `--drive-use-trash` to `true`
|
||||
* S3
|
||||
@ -2173,7 +2173,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* Retry on token expired error, reset upload body on retry - Yoni Jah
|
||||
* Google Cloud Storage
|
||||
* Add ability to specify location and storage class via config and command line - thanks gdm85
|
||||
* Create container if necessary on server side copy
|
||||
* Create container if necessary on server-side copy
|
||||
* Increase directory listing chunk to 1000 to increase performance
|
||||
* Obtain a refresh token for GCS - Steven Lu
|
||||
* Yandex
|
||||
@ -2189,14 +2189,14 @@ Point release to fix hubic and azureblob backends.
|
||||
* Now supports low level retries
|
||||
* S3
|
||||
* Work around eventual consistency in bucket creation
|
||||
* Create container if necessary on server side copy
|
||||
* Create container if necessary on server-side copy
|
||||
* Add us-east-2 (Ohio) and eu-west-2 (London) S3 regions - Zahiar Ahmed
|
||||
* Swift, Hubic
|
||||
* Fix zero length directory markers showing in the subdirectory listing
|
||||
* this caused lots of duplicate transfers
|
||||
* Fix paged directory listings
|
||||
* this caused duplicate directory errors
|
||||
* Create container if necessary on server side copy
|
||||
* Create container if necessary on server-side copy
|
||||
* Increase directory listing chunk to 1000 to increase performance
|
||||
* Make sensible error if the user forgets the container
|
||||
* SFTP
|
||||
@ -2298,7 +2298,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* Allow repeated --include/--exclude/--filter options
|
||||
* Only show transfer stats on commands which transfer stuff
|
||||
* show stats on any command using the `--stats` flag
|
||||
* Allow overlapping directories in move when server side dir move is supported
|
||||
* Allow overlapping directories in move when server-side dir move is supported
|
||||
* Add --stats-unit option - thanks Scott McGillivray
|
||||
* Bug Fixes
|
||||
* Fix the config file being overwritten when two rclone instances are running
|
||||
@ -2320,7 +2320,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* Fix failed to authenticate decrypted block errors
|
||||
* these will now return the underlying unexpected EOF instead
|
||||
* Amazon Drive
|
||||
* Add support for server side move and directory move - thanks Stefan Breunig
|
||||
* Add support for server-side move and directory move - thanks Stefan Breunig
|
||||
* Fix nil pointer deref on size attribute
|
||||
* B2
|
||||
* Use new prefix and delimiter parameters in directory listings
|
||||
@ -2611,7 +2611,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* Swift
|
||||
* Fix sync for chunked files
|
||||
* OneDrive
|
||||
* Re-enable server side copy
|
||||
* Re-enable server-side copy
|
||||
* Don't mask HTTP error codes with JSON decode error
|
||||
* S3
|
||||
* Fix corrupting Content-Type on mod time update (thanks Joseph Spurrier)
|
||||
@ -2629,7 +2629,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* This could have caused data loss for files > 5GB in size
|
||||
* Use ContentType from Object to avoid lookups in listings
|
||||
* OneDrive
|
||||
* disable server side copy as it seems to be broken at Microsoft
|
||||
* disable server-side copy as it seems to be broken at Microsoft
|
||||
|
||||
## v1.24 - 2015-11-07
|
||||
|
||||
@ -2690,7 +2690,7 @@ Point release to fix hubic and azureblob backends.
|
||||
* drive, googlecloudstorage: optionally use auto config for the oauth token
|
||||
* Implement --dump-headers and --dump-bodies debug flags
|
||||
* Show multiple matched commands if abbreviation too short
|
||||
* Implement server side move where possible
|
||||
* Implement server-side move where possible
|
||||
* local
|
||||
* Always use UNC paths internally on Windows - fixes a lot of bugs
|
||||
* dropbox
|
||||
@ -2701,7 +2701,7 @@ Point release to fix hubic and azureblob backends.
|
||||
|
||||
* New features
|
||||
* Server side copies for s3/swift/drive/dropbox/gcs
|
||||
* Move command - uses server side copies if it can
|
||||
* Move command - uses server-side copies if it can
|
||||
* Implement --retries flag - tries 3 times by default
|
||||
* Build for plan9/amd64 and solaris/amd64 too
|
||||
* Fixes
|
||||
|
@ -271,7 +271,7 @@ remove everything including garbage.
|
||||
|
||||
### Caveats and Limitations
|
||||
|
||||
Chunker requires wrapped remote to support server side `move` (or `copy` +
|
||||
Chunker requires wrapped remote to support server-side `move` (or `copy` +
|
||||
`delete`) operations, otherwise it will explicitly refuse to start.
|
||||
This is because it internally renames temporary chunk files to their final
|
||||
names when an operation completes successfully.
|
||||
|
@ -350,7 +350,7 @@ Here are the advanced options specific to crypt (Encrypt/Decrypt a remote).
|
||||
|
||||
#### --crypt-server-side-across-configs
|
||||
|
||||
Allow server side operations (eg copy) to work across different crypt configs.
|
||||
Allow server-side operations (eg copy) to work across different crypt configs.
|
||||
|
||||
Normally this option is not what you want, but if you have two crypts
|
||||
pointing to the same backend you can use it.
|
||||
|
@ -264,7 +264,7 @@ Server Side Copy
|
||||
----------------
|
||||
|
||||
Most remotes (but not all - see [the
|
||||
overview](/overview/#optional-features)) support server side copy.
|
||||
overview](/overview/#optional-features)) support server-side copy.
|
||||
|
||||
This means if you want to copy one folder to another then rclone won't
|
||||
download all the files and re-upload them; it will instruct the server
|
||||
@ -277,13 +277,13 @@ Eg
|
||||
Will copy the contents of `oldbucket` to `newbucket` without
|
||||
downloading and re-uploading.
|
||||
|
||||
Remotes which don't support server side copy **will** download and
|
||||
Remotes which don't support server-side copy **will** download and
|
||||
re-upload in this case.
|
||||
|
||||
Server side copies are used with `sync` and `copy` and will be
|
||||
identified in the log when using the `-v` flag. The `move` command
|
||||
may also use them if remote doesn't support server side move directly.
|
||||
This is done by issuing a server side copy then a delete which is much
|
||||
may also use them if remote doesn't support server-side move directly.
|
||||
This is done by issuing a server-side copy then a delete which is much
|
||||
quicker than a download and re-upload.
|
||||
|
||||
Server side copies will only be attempted if the remote names are the
|
||||
@ -328,7 +328,7 @@ If `--suffix` is set, then the moved files will have the suffix added
|
||||
to them. If there is a file with the same path (after the suffix has
|
||||
been added) in DIR, then it will be overwritten.
|
||||
|
||||
The remote in use must support server side move or copy and you must
|
||||
The remote in use must support server-side move or copy and you must
|
||||
use the same remote as the destination of the sync. The backup
|
||||
directory must not overlap the destination directory.
|
||||
|
||||
@ -537,10 +537,10 @@ connection to go through to a remote object storage system. It is
|
||||
|
||||
When using `sync`, `copy` or `move` DIR is checked in addition to the
|
||||
destination for files. If a file identical to the source is found that
|
||||
file is server side copied from DIR to the destination. This is useful
|
||||
file is server-side copied from DIR to the destination. This is useful
|
||||
for incremental backup.
|
||||
|
||||
The remote in use must support server side copy and you must
|
||||
The remote in use must support server-side copy and you must
|
||||
use the same remote as the destination of the sync. The compare
|
||||
directory must not overlap the destination directory.
|
||||
|
||||
@ -553,7 +553,7 @@ Mode to run dedupe command in. One of `interactive`, `skip`, `first`, `newest`,
|
||||
### --disable FEATURE,FEATURE,... ###
|
||||
|
||||
This disables a comma separated list of optional features. For example
|
||||
to disable server side move and server side copy use:
|
||||
to disable server-side move and server-side copy use:
|
||||
|
||||
--disable move,copy
|
||||
|
||||
@ -1250,7 +1250,7 @@ overwritten or deleted will have the suffix added to them. If there
|
||||
is a file with the same path (after the suffix has been added), then
|
||||
it will be overwritten.
|
||||
|
||||
The remote in use must support server side move or copy and you must
|
||||
The remote in use must support server-side move or copy and you must
|
||||
use the same remote as the destination of the sync.
|
||||
|
||||
This is for use with files to add the suffix in the current directory
|
||||
@ -1331,8 +1331,8 @@ By default, rclone doesn't keep track of renamed files, so if you
|
||||
rename a file locally then sync it to a remote, rclone will delete the
|
||||
old file on the remote and upload a new copy.
|
||||
|
||||
If you use this flag, and the remote supports server side copy or
|
||||
server side move, and the source and destination have a compatible
|
||||
If you use this flag, and the remote supports server-side copy or
|
||||
server-side move, and the source and destination have a compatible
|
||||
hash, then this will track renames during `sync`
|
||||
operations and perform renaming server-side.
|
||||
|
||||
|
@ -407,8 +407,8 @@ For shortcuts pointing to files:
|
||||
- When listing a file shortcut appears as the destination file.
|
||||
- When downloading the contents of the destination file is downloaded.
|
||||
- When updating shortcut file with a non shortcut file, the shortcut is removed then a new file is uploaded in place of the shortcut.
|
||||
- When server side moving (renaming) the shortcut is renamed, not the destination file.
|
||||
- When server side copying the shortcut is copied, not the contents of the shortcut.
|
||||
- When server-side moving (renaming) the shortcut is renamed, not the destination file.
|
||||
- When server-side copying the shortcut is copied, not the contents of the shortcut.
|
||||
- When deleting the shortcut is deleted not the linked file.
|
||||
- When setting the modification time, the modification time of the linked file will be set.
|
||||
|
||||
@ -417,8 +417,8 @@ For shortcuts pointing to folders:
|
||||
- When listing the shortcut appears as a folder and that folder will contain the contents of the linked folder appear (including any sub folders)
|
||||
- When downloading the contents of the linked folder and sub contents are downloaded
|
||||
- When uploading to a shortcut folder the file will be placed in the linked folder
|
||||
- When server side moving (renaming) the shortcut is renamed, not the destination folder
|
||||
- When server side copying the contents of the linked folder is copied, not the shortcut.
|
||||
- When server-side moving (renaming) the shortcut is renamed, not the destination folder
|
||||
- When server-side copying the contents of the linked folder is copied, not the shortcut.
|
||||
- When deleting with `rclone rmdir` or `rclone purge` the shortcut is deleted not the linked folder.
|
||||
- **NB** When deleting with `rclone remove` or `rclone mount` the contents of the linked folder will be deleted.
|
||||
|
||||
@ -956,9 +956,9 @@ Number of API calls to allow without sleeping.
|
||||
|
||||
#### --drive-server-side-across-configs
|
||||
|
||||
Allow server side operations (eg copy) to work across different drive configs.
|
||||
Allow server-side operations (eg copy) to work across different drive configs.
|
||||
|
||||
This can be useful if you wish to do a server side copy between two
|
||||
This can be useful if you wish to do a server-side copy between two
|
||||
different Google drives. Note that this isn't enabled by default
|
||||
because it isn't easy to tell if it will work between any two
|
||||
configurations.
|
||||
@ -1182,7 +1182,7 @@ small files can take a long time.
|
||||
|
||||
Server side copies are also subject to a separate rate limit. If you
|
||||
see User rate limit exceeded errors, wait at least 24 hours and retry.
|
||||
You can disable server side copies with `--disable copy` to download
|
||||
You can disable server-side copies with `--disable copy` to download
|
||||
and upload the files if you prefer.
|
||||
|
||||
#### Limitations of Google Docs ####
|
||||
|
@ -139,7 +139,7 @@ These flags are available for every command.
|
||||
--timeout duration IO idle timeout (default 5m0s)
|
||||
--tpslimit float Limit HTTP transactions per second to this.
|
||||
--tpslimit-burst int Max burst of transactions for --tpslimit. (default 1)
|
||||
--track-renames When synchronizing, track file renames and do a server side move if possible
|
||||
--track-renames When synchronizing, track file renames and do a server-side move if possible
|
||||
--track-renames-strategy string Strategies to use when synchronizing using track-renames hash|modtime|leaf (default "hash")
|
||||
--transfers int Number of file transfers to run in parallel. (default 4)
|
||||
-u, --update Skip files that are newer on the destination.
|
||||
@ -239,7 +239,7 @@ and may be set in the config file.
|
||||
--crypt-password string Password or pass phrase for encryption. (obscured)
|
||||
--crypt-password2 string Password or pass phrase for salt. Optional but recommended. (obscured)
|
||||
--crypt-remote string Remote to encrypt/decrypt.
|
||||
--crypt-server-side-across-configs Allow server side operations (eg copy) to work across different crypt configs.
|
||||
--crypt-server-side-across-configs Allow server-side operations (eg copy) to work across different crypt configs.
|
||||
--crypt-show-mapping For all files listed show how the names encrypt.
|
||||
--drive-acknowledge-abuse Set to allow files which return cannotDownloadAbusiveFile to be downloaded.
|
||||
--drive-allow-import-name-change Allow the filetype to change when uploading Google docs (e.g. file.doc to file.docx). This will confuse sync and reupload every time.
|
||||
@ -260,7 +260,7 @@ and may be set in the config file.
|
||||
--drive-pacer-min-sleep Duration Minimum time to sleep between API calls. (default 100ms)
|
||||
--drive-root-folder-id string ID of the root folder
|
||||
--drive-scope string Scope that rclone should use when requesting access from drive.
|
||||
--drive-server-side-across-configs Allow server side operations (eg copy) to work across different drive configs.
|
||||
--drive-server-side-across-configs Allow server-side operations (eg copy) to work across different drive configs.
|
||||
--drive-service-account-credentials string Service Account Credentials JSON blob
|
||||
--drive-service-account-file string Service Account Credentials JSON file path
|
||||
--drive-shared-with-me Only show files that are shared with me.
|
||||
@ -377,7 +377,7 @@ and may be set in the config file.
|
||||
--onedrive-encoding MultiEncoder This sets the encoding for the backend. (default Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,Hash,Percent,BackSlash,Del,Ctl,LeftSpace,LeftTilde,RightSpace,RightPeriod,InvalidUtf8,Dot)
|
||||
--onedrive-expose-onenote-files Set to make OneNote files show up in directory listings.
|
||||
--onedrive-no-versions Remove all versions on modifying operations
|
||||
--onedrive-server-side-across-configs Allow server side operations (eg copy) to work across different onedrive configs.
|
||||
--onedrive-server-side-across-configs Allow server-side operations (eg copy) to work across different onedrive configs.
|
||||
--onedrive-token string OAuth Access Token as a JSON blob.
|
||||
--onedrive-token-url string Token server url.
|
||||
--opendrive-chunk-size SizeSuffix Files will be uploaded in chunks this size. (default 10M)
|
||||
|
@ -265,7 +265,7 @@ Note that `--timeout` isn't supported (but `--contimeout` is).
|
||||
|
||||
Note that `--bind` isn't supported.
|
||||
|
||||
FTP could support server side move but doesn't yet.
|
||||
FTP could support server-side move but doesn't yet.
|
||||
|
||||
Note that the ftp backend does not support the `ftp_proxy` environment
|
||||
variable yet.
|
||||
|
@ -298,9 +298,9 @@ listing, set this option.
|
||||
|
||||
#### --onedrive-server-side-across-configs
|
||||
|
||||
Allow server side operations (eg copy) to work across different onedrive configs.
|
||||
Allow server-side operations (eg copy) to work across different onedrive configs.
|
||||
|
||||
This can be useful if you wish to do a server side copy between two
|
||||
This can be useful if you wish to do a server-side copy between two
|
||||
different Onedrives. Note that this isn't enabled by default
|
||||
because it isn't easy to tell if it will work between any two
|
||||
configurations.
|
||||
|
@ -371,7 +371,7 @@ files other than deleting them individually.
|
||||
### Copy ###
|
||||
|
||||
Used when copying an object to and from the same remote. This known
|
||||
as a server side copy so you can copy a file without downloading it
|
||||
as a server-side copy so you can copy a file without downloading it
|
||||
and uploading it again. It is used if you use `rclone copy` or
|
||||
`rclone move` if the remote doesn't support `Move` directly.
|
||||
|
||||
@ -381,7 +381,7 @@ the file is downloaded then re-uploaded.
|
||||
### Move ###
|
||||
|
||||
Used when moving/renaming an object on the same remote. This is known
|
||||
as a server side move of a file. This is used in `rclone move` if the
|
||||
as a server-side move of a file. This is used in `rclone move` if the
|
||||
server doesn't support `DirMove`.
|
||||
|
||||
If the server isn't capable of `Move` then rclone simulates it with
|
||||
|
@ -433,7 +433,7 @@ that will generate one or more buckets that will work with `rclone sync`.
|
||||
|
||||
### Key Management System (KMS) ###
|
||||
|
||||
If you are using server side encryption with KMS then you will find
|
||||
If you are using server-side encryption with KMS then you will find
|
||||
you can't transfer small objects. As a work-around you can use the
|
||||
`--ignore-checksum` flag.
|
||||
|
||||
@ -1001,7 +1001,7 @@ This ACL is used for creating objects and if bucket_acl isn't set, for creating
|
||||
|
||||
For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
|
||||
|
||||
Note that this ACL is applied when server side copying objects as S3
|
||||
Note that this ACL is applied when server-side copying objects as S3
|
||||
doesn't copy the ACL from the source but rather writes a fresh one.
|
||||
|
||||
- Config: acl
|
||||
@ -1253,7 +1253,7 @@ large file of a known size to stay below this number of chunks limit.
|
||||
|
||||
Cutoff for switching to multipart copy
|
||||
|
||||
Any files larger than this that need to be server side copied will be
|
||||
Any files larger than this that need to be server-side copied will be
|
||||
copied in chunks of this size.
|
||||
|
||||
The minimum is 0 and the maximum is 5GB.
|
||||
@ -2170,7 +2170,7 @@ Choose a number from below, or type in your own value
|
||||
endpoint> 1
|
||||
Canned ACL used when creating buckets and storing or copying objects.
|
||||
|
||||
Note that this ACL is applied when server side copying objects as S3
|
||||
Note that this ACL is applied when server-side copying objects as S3
|
||||
doesn't copy the ACL from the source but rather writes a fresh one.
|
||||
Enter a string value. Press Enter for the default ("").
|
||||
Choose a number from below, or type in your own value
|
||||
@ -2306,7 +2306,7 @@ endpoint> 4
|
||||
7. Choose acl and storage class.
|
||||
|
||||
```
|
||||
Note that this ACL is applied when server side copying objects as S3
|
||||
Note that this ACL is applied when server-side copying objects as S3
|
||||
doesn't copy the ACL from the source but rather writes a fresh one.
|
||||
Enter a string value. Press Enter for the default ("").
|
||||
Choose a number from below, or type in your own value
|
||||
|
@ -256,7 +256,7 @@ func (acc *Account) checkReadAfter(bytesUntilLimit int64, n int, err error) (out
|
||||
return n, err
|
||||
}
|
||||
|
||||
// ServerSideCopyStart should be called at the start of a server side copy
|
||||
// ServerSideCopyStart should be called at the start of a server-side copy
|
||||
//
|
||||
// This pretends a transfer has started
|
||||
func (acc *Account) ServerSideCopyStart() {
|
||||
|
@ -64,7 +64,7 @@ func AddFlags(flagSet *pflag.FlagSet) {
|
||||
flags.BoolVarP(flagSet, &deleteDuring, "delete-during", "", false, "When synchronizing, delete files during transfer")
|
||||
flags.BoolVarP(flagSet, &deleteAfter, "delete-after", "", false, "When synchronizing, delete files on destination after transferring (default)")
|
||||
flags.Int64VarP(flagSet, &fs.Config.MaxDelete, "max-delete", "", -1, "When synchronizing, limit the number of deletes")
|
||||
flags.BoolVarP(flagSet, &fs.Config.TrackRenames, "track-renames", "", fs.Config.TrackRenames, "When synchronizing, track file renames and do a server side move if possible")
|
||||
flags.BoolVarP(flagSet, &fs.Config.TrackRenames, "track-renames", "", fs.Config.TrackRenames, "When synchronizing, track file renames and do a server-side move if possible")
|
||||
flags.StringVarP(flagSet, &fs.Config.TrackRenamesStrategy, "track-renames-strategy", "", fs.Config.TrackRenamesStrategy, "Strategies to use when synchronizing using track-renames hash|modtime|leaf")
|
||||
flags.IntVarP(flagSet, &fs.Config.LowLevelRetries, "low-level-retries", "", fs.Config.LowLevelRetries, "Number of low level retries to do.")
|
||||
flags.BoolVarP(flagSet, &fs.Config.UpdateOlder, "update", "u", fs.Config.UpdateOlder, "Skip files that are newer on the destination.")
|
||||
|
14
fs/fs.go
14
fs/fs.go
@ -513,7 +513,7 @@ type Features struct {
|
||||
BucketBasedRootOK bool // is bucket based and can use from root
|
||||
SetTier bool // allows set tier functionality on objects
|
||||
GetTier bool // allows to retrieve storage tier of objects
|
||||
ServerSideAcrossConfigs bool // can server side copy between different remotes of the same type
|
||||
ServerSideAcrossConfigs bool // can server-side copy between different remotes of the same type
|
||||
IsLocal bool // is the local backend
|
||||
SlowModTime bool // if calling ModTime() generally takes an extra transaction
|
||||
SlowHash bool // if calling Hash() generally takes an extra transaction
|
||||
@ -526,7 +526,7 @@ type Features struct {
|
||||
// Return an error if it doesn't exist
|
||||
Purge func(ctx context.Context, dir string) error
|
||||
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -537,7 +537,7 @@ type Features struct {
|
||||
// If it isn't possible then return fs.ErrorCantCopy
|
||||
Copy func(ctx context.Context, src Object, remote string) (Object, error)
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -549,7 +549,7 @@ type Features struct {
|
||||
Move func(ctx context.Context, src Object, remote string) (Object, error)
|
||||
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
@ -894,7 +894,7 @@ type Purger interface {
|
||||
|
||||
// Copier is an optional interface for Fs
|
||||
type Copier interface {
|
||||
// Copy src to this remote using server side copy operations.
|
||||
// Copy src to this remote using server-side copy operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -908,7 +908,7 @@ type Copier interface {
|
||||
|
||||
// Mover is an optional interface for Fs
|
||||
type Mover interface {
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// This is stored with the remote path given
|
||||
//
|
||||
@ -923,7 +923,7 @@ type Mover interface {
|
||||
// DirMover is an optional interface for Fs
|
||||
type DirMover interface {
|
||||
// DirMove moves src, srcRemote to this remote at dstRemote
|
||||
// using server side move operations.
|
||||
// using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -372,9 +372,9 @@ func Copy(ctx context.Context, f fs.Fs, dst fs.Object, remote string, src fs.Obj
|
||||
|
||||
var actionTaken string
|
||||
for {
|
||||
// Try server side copy first - if has optional interface and
|
||||
// Try server-side copy first - if has optional interface and
|
||||
// is same underlying remote
|
||||
actionTaken = "Copied (server side copy)"
|
||||
actionTaken = "Copied (server-side copy)"
|
||||
if fs.Config.MaxTransfer >= 0 && (accounting.Stats(ctx).GetBytes() >= int64(fs.Config.MaxTransfer) ||
|
||||
(fs.Config.CutoffMode == fs.CutoffModeCautious && accounting.Stats(ctx).GetBytesWithPending()+src.Size() >= int64(fs.Config.MaxTransfer))) {
|
||||
return nil, accounting.ErrorMaxTransferLimitReachedGraceful
|
||||
@ -385,7 +385,7 @@ func Copy(ctx context.Context, f fs.Fs, dst fs.Object, remote string, src fs.Obj
|
||||
newDst, err = doCopy(ctx, src, remote)
|
||||
if err == nil {
|
||||
dst = newDst
|
||||
in.ServerSideCopyEnd(dst.Size()) // account the bytes for the server side transfer
|
||||
in.ServerSideCopyEnd(dst.Size()) // account the bytes for the server-side transfer
|
||||
err = in.Close()
|
||||
} else {
|
||||
_ = in.Close()
|
||||
@ -396,7 +396,7 @@ func Copy(ctx context.Context, f fs.Fs, dst fs.Object, remote string, src fs.Obj
|
||||
} else {
|
||||
err = fs.ErrorCantCopy
|
||||
}
|
||||
// If can't server side copy, do it manually
|
||||
// If can't server-side copy, do it manually
|
||||
if err == fs.ErrorCantCopy {
|
||||
if doMultiThreadCopy(f, src) {
|
||||
// Number of streams proportional to size
|
||||
@ -556,7 +556,7 @@ func Move(ctx context.Context, fdst fs.Fs, dst fs.Object, remote string, src fs.
|
||||
newDst, err = doMove(ctx, src, remote)
|
||||
switch err {
|
||||
case nil:
|
||||
fs.Infof(src, "Moved (server side)")
|
||||
fs.Infof(src, "Moved (server-side)")
|
||||
return newDst, nil
|
||||
case fs.ErrorCantMove:
|
||||
fs.Debugf(src, "Can't move, switching to copy")
|
||||
@ -576,8 +576,8 @@ func Move(ctx context.Context, fdst fs.Fs, dst fs.Object, remote string, src fs.
|
||||
return newDst, DeleteFile(ctx, src)
|
||||
}
|
||||
|
||||
// CanServerSideMove returns true if fdst support server side moves or
|
||||
// server side copies
|
||||
// CanServerSideMove returns true if fdst support server-side moves or
|
||||
// server-side copies
|
||||
//
|
||||
// Some remotes simulate rename by server-side copy and delete, so include
|
||||
// remotes that implements either Mover or Copier.
|
||||
@ -1287,7 +1287,7 @@ func GetCopyDest(fdst fs.Fs) (CopyDest fs.Fs, err error) {
|
||||
return nil, fserrors.FatalError(errors.New("parameter to --copy-dest has to be on the same remote as destination"))
|
||||
}
|
||||
if CopyDest.Features().Copy == nil {
|
||||
return nil, fserrors.FatalError(errors.New("can't use --copy-dest on a remote which doesn't support server side copy"))
|
||||
return nil, fserrors.FatalError(errors.New("can't use --copy-dest on a remote which doesn't support server-side copy"))
|
||||
}
|
||||
return CopyDest, nil
|
||||
}
|
||||
@ -1329,7 +1329,7 @@ func copyDest(ctx context.Context, fdst fs.Fs, dst, src fs.Object, CopyDest, bac
|
||||
fs.Errorf(src, "Destination found in --copy-dest, error copying")
|
||||
return false, nil
|
||||
}
|
||||
fs.Debugf(src, "Destination found in --copy-dest, using server side copy")
|
||||
fs.Debugf(src, "Destination found in --copy-dest, using server-side copy")
|
||||
return true, nil
|
||||
}
|
||||
fs.Debugf(src, "Unchanged skipping")
|
||||
@ -1543,7 +1543,7 @@ func BackupDir(fdst fs.Fs, fsrc fs.Fs, srcFileName string) (backupDir fs.Fs, err
|
||||
return nil, fserrors.FatalError(errors.New("internal error: BackupDir called when --backup-dir and --suffix both empty"))
|
||||
}
|
||||
if !CanServerSideMove(backupDir) {
|
||||
return nil, fserrors.FatalError(errors.New("can't use --backup-dir on a remote which doesn't support server side move or copy"))
|
||||
return nil, fserrors.FatalError(errors.New("can't use --backup-dir on a remote which doesn't support server-side move or copy"))
|
||||
}
|
||||
return backupDir, nil
|
||||
}
|
||||
|
@ -736,7 +736,7 @@ func TestMoveFileBackupDir(t *testing.T) {
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
if !operations.CanServerSideMove(r.Fremote) {
|
||||
t.Skip("Skipping test as remote does not support server side move or copy")
|
||||
t.Skip("Skipping test as remote does not support server-side move or copy")
|
||||
}
|
||||
|
||||
oldBackupDir := fs.Config.BackupDir
|
||||
@ -788,7 +788,7 @@ func TestCopyFileBackupDir(t *testing.T) {
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
if !operations.CanServerSideMove(r.Fremote) {
|
||||
t.Skip("Skipping test as remote does not support server side move or copy")
|
||||
t.Skip("Skipping test as remote does not support server-side move or copy")
|
||||
}
|
||||
|
||||
oldBackupDir := fs.Config.BackupDir
|
||||
@ -896,7 +896,7 @@ func TestCopyFileCopyDest(t *testing.T) {
|
||||
defer r.Finalise()
|
||||
|
||||
if r.Fremote.Features().Copy == nil {
|
||||
t.Skip("Skipping test as remote does not support server side copy")
|
||||
t.Skip("Skipping test as remote does not support server-side copy")
|
||||
}
|
||||
|
||||
fs.Config.CopyDest = r.FremoteName + "/CopyDest"
|
||||
|
@ -39,7 +39,7 @@ type syncCopyMove struct {
|
||||
noUnicodeNormalization bool // don't normalize unicode characters in filenames
|
||||
deletersWg sync.WaitGroup // for delete before go routine
|
||||
deleteFilesCh chan fs.Object // channel to receive deletes if delete before
|
||||
trackRenames bool // set if we should do server side renames
|
||||
trackRenames bool // set if we should do server-side renames
|
||||
trackRenamesStrategy trackRenamesStrategy // strategies used for tracking renames
|
||||
dstFilesMu sync.Mutex // protect dstFiles
|
||||
dstFiles map[string]fs.Object // dst files, always filled
|
||||
@ -68,7 +68,7 @@ type syncCopyMove struct {
|
||||
trackRenamesWg sync.WaitGroup // wg for background track renames
|
||||
trackRenamesCh chan fs.Object // objects are pumped in here
|
||||
renameCheck []fs.Object // accumulate files to check for rename here
|
||||
compareCopyDest fs.Fs // place to check for files to server side copy
|
||||
compareCopyDest fs.Fs // place to check for files to server-side copy
|
||||
backupDir fs.Fs // place to store overwrites/deletes
|
||||
checkFirst bool // if set run all the checkers before starting transfers
|
||||
}
|
||||
@ -1089,10 +1089,10 @@ func MoveDir(ctx context.Context, fdst, fsrc fs.Fs, deleteEmptySrcDirs bool, cop
|
||||
|
||||
// First attempt to use DirMover if exists, same Fs and no filters are active
|
||||
if fdstDirMove := fdst.Features().DirMove; fdstDirMove != nil && operations.SameConfig(fsrc, fdst) && filter.Active.InActive() {
|
||||
if operations.SkipDestructive(ctx, fdst, "server side directory move") {
|
||||
if operations.SkipDestructive(ctx, fdst, "server-side directory move") {
|
||||
return nil
|
||||
}
|
||||
fs.Debugf(fdst, "Using server side directory move")
|
||||
fs.Debugf(fdst, "Using server-side directory move")
|
||||
err := fdstDirMove(ctx, fsrc, "", "")
|
||||
switch err {
|
||||
case fs.ErrorCantDirMove, fs.ErrorDirExists:
|
||||
|
@ -262,7 +262,7 @@ func TestSyncEmptyDirectories(t *testing.T) {
|
||||
)
|
||||
}
|
||||
|
||||
// Test a server side copy if possible, or the backup path if not
|
||||
// Test a server-side copy if possible, or the backup path if not
|
||||
func TestServerSideCopy(t *testing.T) {
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
@ -1207,7 +1207,7 @@ func toyFileTransfers(r *fstest.Run) int64 {
|
||||
return int64(transfers)
|
||||
}
|
||||
|
||||
// Test a server side move if possible, or the backup path if not
|
||||
// Test a server-side move if possible, or the backup path if not
|
||||
func testServerSideMove(t *testing.T, r *fstest.Run, withFilter, testDeleteEmptyDirs bool) {
|
||||
FremoteMove, _, finaliseMove, err := fstest.RandomRemote()
|
||||
require.NoError(t, err)
|
||||
@ -1231,7 +1231,7 @@ func testServerSideMove(t *testing.T, r *fstest.Run, withFilter, testDeleteEmpty
|
||||
file3 := r.WriteObjectTo(context.Background(), FremoteMove, "potato3", "------------------------------------------------------------", t1, false)
|
||||
fstest.CheckItems(t, FremoteMove, file2, file3)
|
||||
|
||||
// Do server side move
|
||||
// Do server-side move
|
||||
accounting.GlobalStats().ResetCounters()
|
||||
err = MoveDir(context.Background(), FremoteMove, r.Fremote, testDeleteEmptyDirs, false)
|
||||
require.NoError(t, err)
|
||||
@ -1322,14 +1322,14 @@ func TestMoveWithoutDeleteEmptySrcDirs(t *testing.T) {
|
||||
fstest.CheckItems(t, r.Fremote, file1, file2)
|
||||
}
|
||||
|
||||
// Test a server side move if possible, or the backup path if not
|
||||
// Test a server-side move if possible, or the backup path if not
|
||||
func TestServerSideMove(t *testing.T) {
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
testServerSideMove(t, r, false, false)
|
||||
}
|
||||
|
||||
// Test a server side move if possible, or the backup path if not
|
||||
// Test a server-side move if possible, or the backup path if not
|
||||
func TestServerSideMoveWithFilter(t *testing.T) {
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
@ -1342,14 +1342,14 @@ func TestServerSideMoveWithFilter(t *testing.T) {
|
||||
testServerSideMove(t, r, true, false)
|
||||
}
|
||||
|
||||
// Test a server side move if possible
|
||||
// Test a server-side move if possible
|
||||
func TestServerSideMoveDeleteEmptySourceDirs(t *testing.T) {
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
testServerSideMove(t, r, false, true)
|
||||
}
|
||||
|
||||
// Test a server side move with overlap
|
||||
// Test a server-side move with overlap
|
||||
func TestServerSideMoveOverlap(t *testing.T) {
|
||||
r := fstest.NewRun(t)
|
||||
defer r.Finalise()
|
||||
@ -1492,7 +1492,7 @@ func TestSyncCopyDest(t *testing.T) {
|
||||
defer r.Finalise()
|
||||
|
||||
if r.Fremote.Features().Copy == nil {
|
||||
t.Skip("Skipping test as remote does not support server side copy")
|
||||
t.Skip("Skipping test as remote does not support server-side copy")
|
||||
}
|
||||
|
||||
fs.Config.CopyDest = r.FremoteName + "/CopyDest"
|
||||
@ -1595,7 +1595,7 @@ func testSyncBackupDir(t *testing.T, backupDir string, suffix string, suffixKeep
|
||||
defer r.Finalise()
|
||||
|
||||
if !operations.CanServerSideMove(r.Fremote) {
|
||||
t.Skip("Skipping test as remote does not support server side move")
|
||||
t.Skip("Skipping test as remote does not support server-side move")
|
||||
}
|
||||
r.Mkdir(context.Background(), r.Fremote)
|
||||
|
||||
@ -1699,7 +1699,7 @@ func testSyncSuffix(t *testing.T, suffix string, suffixKeepExtension bool) {
|
||||
defer r.Finalise()
|
||||
|
||||
if !operations.CanServerSideMove(r.Fremote) {
|
||||
t.Skip("Skipping test as remote does not support server side move")
|
||||
t.Skip("Skipping test as remote does not support server-side move")
|
||||
}
|
||||
r.Mkdir(context.Background(), r.Fremote)
|
||||
|
||||
|
@ -1107,7 +1107,7 @@ func Run(t *testing.T, opt *Opt) {
|
||||
require.NoError(t, remote.Rmdir(ctx, "moveTest"))
|
||||
})
|
||||
|
||||
// Move src to this remote using server side move operations.
|
||||
// Move src to this remote using server-side move operations.
|
||||
//
|
||||
// Will only be called if src.Fs().Name() == f.Name()
|
||||
//
|
||||
|
@ -166,7 +166,7 @@ func (f *File) rename(ctx context.Context, destDir *Dir, newName string) error {
|
||||
f.mu.RUnlock()
|
||||
|
||||
if features := d.Fs().Features(); features.Move == nil && features.Copy == nil {
|
||||
err := errors.Errorf("Fs %q can't rename files (no server side Move or Copy)", d.Fs())
|
||||
err := errors.Errorf("Fs %q can't rename files (no server-side Move or Copy)", d.Fs())
|
||||
fs.Errorf(f.Path(), "Dir.Rename error: %v", err)
|
||||
return err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user