Google Drive to Google Drive "Server Side Copy" Never Works

Setup contains two google drive accounts, 4 remotes:

gdrive (google drive)
gdrivecrypt (encrypts the above)

gdrive2 (google drive)
gdrive2crypt (encrypts the above)

Everything is uploaded to one account, using gdrivecrypt. The second account is empty.

Now, I want to copy what is uploaded on gdrive1, onto gdrive2 (I don't need to encrypt it again, so didn't pick gdrive2crypt)

The flag is set on both my remotes to allow server side copying

However, when I try the below:

rclone sync gdrivecrypt gdrive2 --drive-server-side-across-configs -P

or

rclone sync gdrivecrypt gdrive2 -P

The process runs at about 2mb/s. This is my upload speed, so I can tell it is not doing it server side.

Any idea what I am doing wrong?

Thanks

You want to sync the encrypted gdrives together

rclone sync gdrive: gdrive2: --drive-server-side-across-configs -P

Otherwise rclone will download the data to decrypt it before placing in it gdrive2:

You will need to use the same keys in gdrivecrypt and gdrive2crypt

Thanks, when I try the above command I get all errors. For example:

2019-10-27 09:59:14 ERROR : folder1/encryptedFileName: Failed to copy: googleapi: Error 404: File not found: 13Y6cLIgOjf3pj_wYyLMcUhPFRF_t3o., notFound

encryptedFileName is my encrypted file name in source

folder1 is the folder it is in, in source

To add, I am trying to copy from my team drive, to a completely different account, non team drive, via server side copy. Could this be the cause of the issues?

What does rclone version show?

rclone v1.49.5

  • os/arch: darwin/amd64

  • go version: go1.12.10

Can you download the latest and retry? 1.50 has some fixes for server side.

I'm pretty sure that is googles rather cryptic way of saying that the user of gdrive2 doesn't have permission to server side copy files from gdrive1.

You can try sharing gdrive1 with the user of gdrive2 - I think that may work.

Or don't use --drive-server-side-across-configs but that will involve downloading and re-uploading.

Thanks. I think so too. I went onto the google drive front end and tried sharing that folder with account 2, but it doesn’t let me share a team drive since I don’t own it

Account 2 is not a team drive, therefore I’ll try uploading some files there, and try the inverse (Rclone Account 2 > Account 1)

If that works then I’ll simply start using Account 2 as my ‘source’ and do rclone transfers from account 2 to account 1

1 Like

Yes, the 404 means drive2 can't read from drive1.
When you don't use servers-side this is no problem because you are the middle man.
But on server-side, drive2 actually needs to have access to drive1 directly to do what you are asking.

So if I understand correctly, drive1 is a teamdrive, and drive2 is a regular drive, correct?

To get data (server-side) from a teamdrive, you will have to invite the drive2 user to teamdrive1. teamdrives have no "share" function so the only way this is going to work is if you can invite, or get the owner to invite, the drive2 user.

If both drives were teamdrives you could alternatively have invited user1 to teamdrive2 so user1 had access both places, but a personal-drive will be hard-connected to user2, so that sadly isn't an option here I think...

To get data (server-side) from a non-teamdrive, you will have to use the "share" function and share it to the drive2 user.
Then on drive2, use the --drive-share-with-me flag to access these shared files. You can now access them and and copy them to the normal storage of drive2.

So you are right, that if you have no control over teamdrive1 then the traffic might be easier the other way. That said, I think it should be possible to write to a shared area too... that's just not something I have tested. But if that works that would allow user1 to send data from teamdrive1 to a place user2/drive2 can access it.

Let me know if you need more detailed help :slight_smile: