Yet Another Immich Migration Guide #12334
bitsondatadev
started this conversation in
Community Guides
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Yet Another Immich Migration Guide
One migration guide to rule them all. 💍
Overview
The goal of this guide is to be a central guide where the community can update and consolidate the dispersion of different workflows and scripting towards a more centralized approach to migration to Immich.
Why?
This will become more important as the community becomes less technically savvy and people support their families performing our favorite task...data migrations on all their data (godspeed). As the community builds towards a more common list of well tested and understood steps, we can then work with the core team to simplify those steps, enable customization of migration from multiple sources and for various preprocessing tasks to verify most paths and one off issues are handled.
Getting the migration portion of this story ironed out is so important and commonly overlooked since most developers feel a sense of accomplishment by writing their cool custom scripts that only make sense to them. This is good because it's how projects like Immich get started in the first place. But this technology should eventually lower the assumptions that these tasks are handled by software developers or hackers. That said, we can't and shouldn't just jump from where Immich is today to over-engineers GUI features that over-obfuscate the internals. In this way it's valuable to take the slow journey as a community to gather what inputs different migration steps need today and in the future as Immich adoption soars and people gain autonomy over their data.
Guide Goals
Community driven migration process development. (more)
Updated to use latest Immich features. (more)
Organize features to simplify migration steps. (more)
Enough rambling, here's the dang guide already!
Guide
Prerequisites
exiftool
if needed for the exif inspection or manual fixing errors.Image and video libraries tend to exceed hundreds of gigabytes so they are exported in compressed formats that make it faster and easier to transfer, but you'll take up space for both the compressed file and decompressed files after you extract the data.
Phase 1: Download and Extract the data
Phase 2: Process image metadata
The primary metadata that exists on images that comes in handy during imports are the EXIF data, Album data, geolocation, and other data possibly stored by the source provider like face tagging. Since there is no current state-of-the-art tool for fixing these issues, we're going to use the Docker install of the garzj/google-photos-migrate project. If you prefer npm, feel free to take that route and skip this section. To keep consistent with using Docker, we will follow these steps:
Download the google-photos-migrate repository, unzip it and move into the google-photos-migrate directory. You can optionally use
git clone
if you prefer.Create an
output
anderror
directory in the root directory of the google-photos-migrate repository.Assuming your unzipped Google Takeout folder is located at
~/Pictures/Takeout/
, run the following command with the takeout directory updated according to your location.(Optional) if there are files in the error folder, you can use
exiftool
to attempt to fix those issues manually, or just ignore them (the files without metadata are there already). See this tutorial for some ideas on how to useexiftool
.fixme-album
. One day you'll get to them...I have faith in you.The resulting images are in the
output
folder.Phase 3: Upload images to Immich
This phase assumes you've created the user you intend to upload data for. As done in previous sections, we will also use the Docker command to upload the
If you don't already have one for the user you're uploading data for, create a new Immich API key from their account.
Run the upload command.
I assume you'll want to do recursive and album options if you have to enable copying the album names automatically based on the directory structure. You may also want to add
--dry-run
to verify nothing blows up. Here's a list of all the options for theupload
command.Verify things are looking good on the web browser.
Appendix
Appendix A: Common issues
Appendix B: Migration-related features and discussions
Appendix C: Migration tools
immich-go
mattwilson1024/google-photos-exif
CrcCheckCopy
delete_photos.js
gphotos-sync Python tool
Appendix D: Existing guides
exiftool
step to fix the errored data.exiftool
operationsBeta Was this translation helpful? Give feedback.
All reactions