So I started the Google Takeout process because I want to move my photos from Google Photos to Immich.
Google emailed me saying the archives are ready… uh… I have to download 81 zip files, each 2GB big… 😬
Is there an easy way to download all of these files? Or do I have to click “download” 81 times and hope the downloads don’t get interrupted?
I just clicked download on 3 at a time until I was done. Could it be automated? Sure. But clicking 3 at a time is way faster than figuring it out.
I HIGHLY recommend immich-go if you haven’t found it yet: https://github.com/simulot/immich-go
Enjoy immich!! Great self hosting project.
The asinine route I took was to authorise Google to deliver the file(s) to my OneDrive and then use one drive sync to download them.
There are benefits, the files are ‘backed up’ on another cloud; the process it entirely independent of you having a browser session.
Do it again, but select 50GB chunks. This will produce fewer files.
Use immich-go to do the importing.
select 50GB chunks
That wasn’t an option for zip files.
Looks like for tarballs, I can select 50GB chunks. However, immich-go’s best practices say to pick zip.
Choose the ZIP format when creating your takeout for easier import.
https://github.com/simulot/immich-go?tab=readme-ov-file#google-photos-best-practices
What difference does it make to immich-go if I pick zip vs tar?
Ah, maybe the max was 20GB for zip. I’d just do the max available for zip.
For .tgz files (compressed tar archives), you’ll need to decompress all the files into a single folder before importing. Then use the command immich-go upload from-google-photos /path/to/your/files.
Well, you won’t like it. If you have very fast internet and a managed downloader, then you may be able to get all of the files. Google seems to throttle the speeds to make large takeouts almost impossible to download in the limited time allowed.
For this size of download, your best option is to get a subscription to a compatible service (Dropbox, etc.) To transfer the files, which will happen much more quickly than downloading yourself. Then download the files from that service at your leisure, and then cancel the service.
It’s pretty backwards, but it’s really the best option for large takeouts (over 5 gigs or so).
Have you looked at rclone?
You can plug rclone into your Google drive and then use copy to download all your photos into immich, the setup is also very easy
Negative, full-res photos with EXIF is not possible to access with rclone (due to Photos API limitations).
Welp, thanks Google.
Also, you will need to do some preprocessing of your files before importing to immich. Something like this to fix the metadata. I can’t remember which one I used, because there are a few out there.
I have tried to solve this many times as I want to regularly back up my Google content - mostly the images for the same purpose you mention.
Unfortunately there is no good solution I’ve ever come up with or found. I even looked into scripting with something like puppeteer. It requires regular confirmation of your authentication and I just haven’t found a good way to solve that since there’s no API access. It also won’t let you use any cli tools like
wget
. You could probably figure out how to pull some token or cookie to give to the cli but you’d have to do it so often that its more of a pain than just manually downloading.My solution currently is to run a firefox browser in a container on my server to download them. It acts as sort of a session manager (like tmux or zellij for command line) so that if the PC I’m using goes to sleep or something, the downloads continue. Then I just check in occasionally through the day. Plus I wanted them on the server anyway, at the end of the day. Downloading them there directly saves me having to then transfer to the server.
Switching to .tgz will let you make up to 50GB files which at least means fewer iterations and longer time between interactions (so I can actually do something useful in the meantime).
I sincerely hope someone proves me wrong and has a way to do this but I’ve searched a lot. I know other people want to solve it but I’ve never seen anyone with a solution.