How to add an existing photo to an album in Google Photos?

What is the problem you are having with rclone?

In short: some photos are added to the album, others are copied. Explanation and context below.

First of all there is no straightfoward command to add photos into an album, so the "move" command seemed to be the closest one, even if the photo will not be deleted from the Photo Library after it is in the Album. I did some research, I checked the man pages, the git repo, and here in the forum, this guy had basically the same issue, but there was no solution in that case.

I tried to use the move command in random photos and the result was that it was creating a new photo in the album instead of adding the the photo in the album. The final situation is that I end up with 2 photos, the original one in no album (Photo Library) and the copy in the album. And you can notice the one in the Album (IMG_0759_Original.JPG) is a copy because:

  • The photo details in GPhoto says "Uploaded from rclone", instead of "Uploaded from iOS" as the photo out of the Album
  • The photo detail shows "Backed up (1.8 MB) Original Quality", as opposed to the photo outside of the shows "Backed up (3.6 MB) Original Quality"
  • The photo does NOT have GPS details, differently from the photo outside of the Album that does have GPS information.

But then, by chance, I tried another photo (IMG_1650_Original.JPG) and that one was not copied. It was indeed added to the album.

I removed it from the album, deleted the copy in the album, kept the album empty again and tried several times, and it is always the same result.

I'm showing some screenshots of what I described

The 3 photos in question (the 2 original ones and the copy). You can see in the top left that they are the result of a search in Google Photos, then the 3 photos are expanded below and then you see that the first is the original that was not added to the Album (it is larger in MB, it has GPS, and it says it was uploaded by iOS), the second one is the copy of the first one that was added to the album (you can see the album name on the top of the information, it also says it was uploaded by rclone, it has no GPS coordinates and it is smaller in MB). The third one is the one that was actually added to the album (album name on top, it says it was uploaded by iOS and it has GPS coordinates

PS: I wanted to provide here the 2 photos for simulation, but the 2 photos are Live, and if you download them, Google provides the JPG and the MOV, and I don't know if that would impact the simulation.

It is clear that with one of the photos rclone can do something that is actually adding the photo to the album, and with the other photo, rclone is downloading it locally and re-uploading to the album. I gues the questions here are:

  • Why is it behaving like that (some photos, maybe most are copied while some others are added)?
  • How to make rclone always add photos to albums withouth creating copies?
  • Is there another process to do that that I'm not aware of?

Run the command 'rclone version' and share the full output of the command.

rclone v1.65.2

  • os/version: linuxmint 20.2 (64 bit)
  • os/kernel: 5.4.0-74-generic (x86_64)
  • os/type: linux
  • os/arch: amd64
  • go/version: go1.21.6
  • go/linking: static
  • go/tags: none

Which cloud storage system are you using? (eg Google Drive)

Google Photos

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone move remote-ap2:media/all/IMG_0759_Original.JPG remote-ap2:album/Temp_Album_20385
rclone move remote-ap2:media/all/IMG_1650_Original.JPG remote-ap2:album/Temp_Album_20385

Please run 'rclone config redacted' and share the full output. If you get command not found, please make sure to update rclone.

[remote-ap2]
type = google photos
token = XXX
### Double check the config for sensitive info before posting publicly

A log from the command that you were trying to run with the -vv flag

Command:

rclone -vv move remote-ap2:media/all/IMG_0759_Original.JPG remote-ap2:album/Temp_Album_20385

Result:

2024/02/07 18:08:48 DEBUG : rclone: Version "v1.65.2" starting with parameters ["rclone" "-vv" "move" "remote-ap2:media/all/IMG_0759_Original.JPG" "remote-ap2:album/Temp_Album_20385"]
2024/02/07 18:08:48 DEBUG : Creating backend with remote "remote-ap2:media/all/IMG_0759_Original.JPG"
2024/02/07 18:08:48 DEBUG : Using config file from "/home/alien/.config/rclone/rclone.conf"
2024/02/07 18:08:48 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_0759_Original.JPG"
2024/02/07 18:08:48 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:08:48 DEBUG : remote-ap2: Loaded invalid token from config file - ignoring
2024/02/07 18:08:48 DEBUG : Saving config "token" in section "remote-ap2" of the config file
2024/02/07 18:08:48 DEBUG : remote-ap2: Saved new token in config file
2024/02/07 18:09:08 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:09:08 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:09:08 DEBUG : fs cache: adding new entry for parent of "remote-ap2:media/all/IMG_0759_Original.JPG", "remote-ap2:media/all"
2024/02/07 18:09:08 DEBUG : Creating backend with remote "remote-ap2:album/Temp_Album_20385"
2024/02/07 18:09:08 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_0759_Original.JPG"
2024/02/07 18:09:08 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:09:24 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:09:24 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:09:24 DEBUG : Google Photos path "album/Temp_Album_20385": NewObject: remote="IMG_0759_Original.JPG"
2024/02/07 18:09:24 DEBUG : Google Photos path "album/Temp_Album_20385": List: dir=""
2024/02/07 18:09:25 DEBUG : Google Photos path "album/Temp_Album_20385": >List: err=<nil>
2024/02/07 18:09:25 DEBUG : Google Photos path "album/Temp_Album_20385": >NewObject:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: Need to transfer - File not found at Destination
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:25 DEBUG : IMG_0759_Original.JPG: Open:
2024/02/07 18:09:26 DEBUG : IMG_0759_Original.JPG: >Open:
2024/02/07 18:09:26 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:26 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:26 DEBUG : IMG_0759_Original.JPG: ModTime:
2024/02/07 18:09:26 DEBUG : IMG_0759_Original.JPG: >ModTime:
2024/02/07 18:09:26 DEBUG : Google Photos path "album/Temp_Album_20385": Target remote doesn't support streaming uploads, creating temporary local FS to spool file
2024/02/07 18:09:26 DEBUG : Creating backend with remote "/tmp/rclone-spool3084899157"
2024/02/07 18:09:26 NOTICE: Local file system at /tmp/rclone-spool3084899157: --checksum is in use but the source and destination have no hashes in common; falling back to --size-only
2024/02/07 18:09:26 DEBUG : IMG_0759_Original.JPG: Size of src and dst objects identical
2024/02/07 18:09:26 DEBUG : Google Photos path "album/Temp_Album_20385": Put: src=IMG_0759_Original.JPG
2024/02/07 18:09:26 DEBUG : IMG_0759_Original.JPG: Update: src=IMG_0759_Original.JPG
2024/02/07 18:09:26 DEBUG : Google Photos path "album/Temp_Album_20385": Adding "IMG_0759_Original.JPG" to batch
2024/02/07 18:09:27 DEBUG : Google Photos path "album/Temp_Album_20385": Batch idle for 1s so committing
2024/02/07 18:09:27 DEBUG : Google Photos path "album/Temp_Album_20385": Committing sync batch length 1 starting with: IMG_0759_Original.JPG
2024/02/07 18:09:29 DEBUG : Google Photos path "album/Temp_Album_20385": Committed sync batch length 1 starting with: IMG_0759_Original.JPG
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: >Update: err=<nil>
2024/02/07 18:09:29 DEBUG : Google Photos path "album/Temp_Album_20385": >Put:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:29 INFO  : IMG_0759_Original.JPG: Copied (new)
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:29 INFO  : IMG_0759_Original.JPG: Copied (Rcat, new)
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: Size:
2024/02/07 18:09:29 DEBUG : IMG_0759_Original.JPG: >Size:
2024/02/07 18:09:29 ERROR : IMG_0759_Original.JPG: Couldn't delete: google photos API only implements removing files from albums
2024/02/07 18:09:29 ERROR : Attempt 1/3 failed with 1 errors and: google photos API only implements removing files from albums
2024/02/07 18:09:29 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_0759_Original.JPG"
2024/02/07 18:09:29 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:09:46 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:09:46 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:09:46 ERROR : Attempt 2/3 failed with 1 errors and: object not found
2024/02/07 18:09:46 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_0759_Original.JPG"
2024/02/07 18:09:46 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:10:03 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:10:03 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:10:03 ERROR : Attempt 3/3 failed with 1 errors and: object not found
2024/02/07 18:10:03 INFO  :
Transferred:        3.356 MiB / 3.356 MiB, 100%, 55.377 KiB/s, ETA 0s
Errors:                 1 (retrying may help)
Checks:                 1 / 1, 100%
Deleted:                1 (files), 1 (dirs)
Transferred:            1 / 1, 100%
Elapsed time:      1m15.7s

2024/02/07 18:10:03 DEBUG : 10 go routines active
2024/02/07 18:10:03 INFO  : Google Photos path "media/all": Committing uploads - please wait...
2024/02/07 18:10:03 INFO  : Google Photos path "album/Temp_Album_20385": Committing uploads - please wait...
2024/02/07 18:10:03 Failed to move: object not found

Command:

rclone -vv move remote-ap2:media/all/IMG_1650_Original.JPG remote-ap2:album/Temp_Album_20385

Result:

2024/02/07 18:10:48 DEBUG : rclone: Version "v1.65.2" starting with parameters ["rclone" "-vv" "move" "remote-ap2:media/all/IMG_1650_Original.JPG" "remote-ap2:album/Temp_Album_20385"]
2024/02/07 18:10:48 DEBUG : Creating backend with remote "remote-ap2:media/all/IMG_1650_Original.JPG"
2024/02/07 18:10:48 DEBUG : Using config file from "/home/alien/.config/rclone/rclone.conf"
2024/02/07 18:10:48 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_1650_Original.JPG"
2024/02/07 18:10:48 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:11:05 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:11:05 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:11:05 DEBUG : fs cache: adding new entry for parent of "remote-ap2:media/all/IMG_1650_Original.JPG", "remote-ap2:media/all"
2024/02/07 18:11:05 DEBUG : Creating backend with remote "remote-ap2:album/Temp_Album_20385"
2024/02/07 18:11:05 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_1650_Original.JPG"
2024/02/07 18:11:05 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:11:21 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:11:21 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:11:21 DEBUG : Google Photos path "album/Temp_Album_20385": NewObject: remote="IMG_1650_Original.JPG"
2024/02/07 18:11:21 DEBUG : Google Photos path "album/Temp_Album_20385": List: dir=""
2024/02/07 18:11:22 DEBUG : Google Photos path "album/Temp_Album_20385": >List: err=<nil>
2024/02/07 18:11:22 DEBUG : Google Photos path "album/Temp_Album_20385": >NewObject:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Need to transfer - File not found at Destination
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Open:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: >Open:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: ModTime:
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: >ModTime:
2024/02/07 18:11:22 DEBUG : Google Photos path "album/Temp_Album_20385": Target remote doesn't support streaming uploads, creating temporary local FS to spool file
2024/02/07 18:11:22 DEBUG : Creating backend with remote "/tmp/rclone-spool1868595433"
2024/02/07 18:11:22 NOTICE: Local file system at /tmp/rclone-spool1868595433: --checksum is in use but the source and destination have no hashes in common; falling back to --size-only
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Size of src and dst objects identical
2024/02/07 18:11:22 DEBUG : Google Photos path "album/Temp_Album_20385": Put: src=IMG_1650_Original.JPG
2024/02/07 18:11:22 DEBUG : IMG_1650_Original.JPG: Update: src=IMG_1650_Original.JPG
2024/02/07 18:11:23 DEBUG : Google Photos path "album/Temp_Album_20385": Adding "IMG_1650_Original.JPG" to batch
2024/02/07 18:11:24 DEBUG : Google Photos path "album/Temp_Album_20385": Batch idle for 1s so committing
2024/02/07 18:11:24 DEBUG : Google Photos path "album/Temp_Album_20385": Committing sync batch length 1 starting with: IMG_1650_Original.JPG
2024/02/07 18:11:26 DEBUG : Google Photos path "album/Temp_Album_20385": Committed sync batch length 1 starting with: IMG_1650_Original.JPG
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: >Update: err=<nil>
2024/02/07 18:11:26 DEBUG : Google Photos path "album/Temp_Album_20385": >Put:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:26 INFO  : IMG_1650_Original.JPG: Copied (new)
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:26 INFO  : IMG_1650_Original.JPG: Copied (Rcat, new)
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:26 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:26 ERROR : IMG_1650_Original.JPG: Couldn't delete: google photos API only implements removing files from albums
2024/02/07 18:11:26 ERROR : Attempt 1/3 failed with 1 errors and: google photos API only implements removing files from albums
2024/02/07 18:11:26 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_1650_Original.JPG"
2024/02/07 18:11:26 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:11:42 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:11:42 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:11:42 DEBUG : Google Photos path "album/Temp_Album_20385": NewObject: remote="IMG_1650_Original.JPG"
2024/02/07 18:11:42 DEBUG : Google Photos path "album/Temp_Album_20385": List: dir=""
2024/02/07 18:11:42 DEBUG : Google Photos path "album/Temp_Album_20385": >List: err=<nil>
2024/02/07 18:11:42 DEBUG : Google Photos path "album/Temp_Album_20385": >NewObject:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: ModTime:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: >ModTime:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: Sizes identical
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: Unchanged skipping
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:42 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:42 ERROR : IMG_1650_Original.JPG: Couldn't delete: google photos API only implements removing files from albums
2024/02/07 18:11:42 ERROR : Attempt 2/3 failed with 1 errors and: google photos API only implements removing files from albums
2024/02/07 18:11:42 DEBUG : Google Photos path "media/all": NewObject: remote="IMG_1650_Original.JPG"
2024/02/07 18:11:42 DEBUG : Google Photos path "media/all": List: dir=""
2024/02/07 18:11:58 DEBUG : Google Photos path "media/all": >List: err=<nil>
2024/02/07 18:11:58 DEBUG : Google Photos path "media/all": >NewObject:
2024/02/07 18:11:58 DEBUG : Google Photos path "album/Temp_Album_20385": NewObject: remote="IMG_1650_Original.JPG"
2024/02/07 18:11:58 DEBUG : Google Photos path "album/Temp_Album_20385": List: dir=""
2024/02/07 18:11:59 DEBUG : Google Photos path "album/Temp_Album_20385": >List: err=<nil>
2024/02/07 18:11:59 DEBUG : Google Photos path "album/Temp_Album_20385": >NewObject:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: ModTime:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: >ModTime:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: Sizes identical
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: Unchanged skipping
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: Size:
2024/02/07 18:11:59 DEBUG : IMG_1650_Original.JPG: >Size:
2024/02/07 18:11:59 ERROR : IMG_1650_Original.JPG: Couldn't delete: google photos API only implements removing files from albums
2024/02/07 18:11:59 ERROR : Attempt 3/3 failed with 1 errors and: google photos API only implements removing files from albums
2024/02/07 18:11:59 INFO  :
Transferred:        4.301 MiB / 4.301 MiB, 100%, 75.694 KiB/s, ETA 0s
Errors:                 1 (retrying may help)
Checks:                 3 / 3, 100%
Deleted:                3 (files), 1 (dirs)
Transferred:            1 / 1, 100%
Elapsed time:      1m10.8s

2024/02/07 18:11:59 DEBUG : 10 go routines active
2024/02/07 18:11:59 INFO  : Google Photos path "media/all": Committing uploads - please wait...
2024/02/07 18:11:59 INFO  : Google Photos path "album/Temp_Album_20385": Committing uploads - please wait...
2024/02/07 18:11:59 Failed to move: google photos API only implements removing files from albums

The Google Photos API is pretty bad.

Google Photos (rclone.org)

Has a ton of the gotchas along the way.

That's an API limitation.

The limitations talk through a bit on the challenges so let us know if there something else that isn't covered in there.

Hello, thanks for the reply but my point is not that the photo is not deleted from the source, I'm ok with that. The problem is that it doesn't seem to be consistent. For some photos it adds them to the Album, for others it creates a copy and adds the copy to the album.

You have 1 remote. The source and destination are the same so you really can't move from 'all' to and album as 'all' is 'all' your photos. So when you try to move from all to an album, I can't imagine that would produce great results as it can't delete it and probably is confusing for the API.

That's covered the Layout section of the docs:

Google Photos (rclone.org)

If you just trying to move folders in the Google Photos, you'd have a much better experience using the Web App or something to easily move stuff imo.

I would use rclone if I'm moving from somewhere other than the remote and I need to copy local to Google Photos as an example. The API has serious limitations and really isn't usable imo, but many people do use it.

It seems that it's more than that. If one photo it always adds to the album and another photo it never adds to the album, there is something going on there. I may have to open an Issue in the git repo

You'd want to reproduce that and share it.

Use a copy command the move command doesn't make sense.

Pick the one photo that doesn't work. It's probably a live video or something.

Both of the photos are live photos.
But the copy command makes less sense in my opinion as its objective is actually to duplicate the file, and that is what it does as I have tried it

How? You can't delete with move so running a move without a delete in this case, is identical to copy but it doesn't generate an error.

So if you move, you get an error every time since it can't be deleted anyway.

If you goal is you have something in Google Photos 'all' and you want to 'move' it to an album, the API is limited and isn't going to do what you want. You'd have much better luck using the Web UI.

If you have local stuff to move to Google Photos, you can use rclone but the limitations are rough.

copy creates another file, which is not what I want. The move, at least in principle, should not create another file.

Except that it is not. As I mentioned, it does add some of the photos to the album (and I just ignore the error that it can't delete from the source). The problem is that some of the photos are duplicated in the album. That is what I meant by inconsistency.

And I'm ok with that, I can just 2> /dev/null

That's what I thought when I first read the docs, but then I tested and it worked as I wanted for some of the photos...

I'm not sure how many times I can quote the same piece.

That means move does not delete hence making it a copy not a move.

I believe you would have to try it to see what I'm talking about. It seems that you are under the impression that my issue is with that error... it is not... my issue is with the fact that rclone is behaving differently for photos IMG_0759_Original.JPG and IMG_1650_Original.JPG. That's all

I had done that and my comment still stands. Not sure what’s confusing about it.