mirror of
https://github.com/rclone/rclone.git
synced 2025-12-10 05:13:45 +00:00
Compare commits
1 Commits
copilot/fi
...
fix-7939-o
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a64413b1b |
@@ -213,11 +213,9 @@ listing, set this option.`,
|
||||
|
||||
Allow server-side operations (e.g. copy) to work across different onedrive configs.
|
||||
|
||||
This will work if you are copying between two OneDrive *Personal* drives AND the files to
|
||||
copy are already shared between them. Additionally, it should also function for a user who
|
||||
has access permissions both between Onedrive for *business* and *SharePoint* under the *same
|
||||
tenant*, and between *SharePoint* and another *SharePoint* under the *same tenant*. In other
|
||||
cases, rclone will fall back to normal copy (which will be slightly slower).`,
|
||||
This will only work if you are copying between two OneDrive *Personal* drives AND
|
||||
the files to copy are already shared between them. In other cases, rclone will
|
||||
fall back to normal copy (which will be slightly slower).`,
|
||||
Advanced: true,
|
||||
}, {
|
||||
Name: "list_chunk",
|
||||
@@ -1611,12 +1609,14 @@ func (f *Fs) Copy(ctx context.Context, src fs.Object, remote string) (fs.Object,
|
||||
fs.Debugf(src, "Can't copy - not same remote type")
|
||||
return nil, fs.ErrorCantCopy
|
||||
}
|
||||
|
||||
if (f.driveType == driveTypePersonal && srcObj.fs.driveType != driveTypePersonal) || (f.driveType != driveTypePersonal && srcObj.fs.driveType == driveTypePersonal) {
|
||||
fs.Debugf(src, "Can't server-side copy - cross-drive between OneDrive Personal and OneDrive for business (SharePoint)")
|
||||
if f.driveType != srcObj.fs.driveType {
|
||||
fs.Debugf(src, "Can't server-side copy - drive types differ")
|
||||
return nil, fs.ErrorCantCopy
|
||||
} else if f.driveType == driveTypeBusiness && srcObj.fs.driveType == driveTypeBusiness && srcObj.fs.driveID != f.driveID {
|
||||
fs.Debugf(src, "Can't server-side copy - cross-drive between difference OneDrive for business (Not SharePoint)")
|
||||
}
|
||||
|
||||
// For OneDrive Business, this is only supported within the same drive
|
||||
if f.driveType != driveTypePersonal && srcObj.fs.driveID != f.driveID {
|
||||
fs.Debugf(src, "Can't server-side copy - cross-drive but not OneDrive Personal")
|
||||
return nil, fs.ErrorCantCopy
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user