Développement Web

Migrer de Google Photos vers Immich : tutoriel complet 2026 (Takeout, déduplication, métadonnées)

10 min de lecture

📍 Article principal de la série : Immich 2026 : guide pratique.

50 000 photos accumulées dans Google Photos depuis 2014. Vous voulez les rapatrier dans Immich auto-hébergé sans perdre les métadonnées (date, lieu GPS, albums, descriptions). Ce tutoriel détaille la procédure utilisée par plusieurs familles et professionnels en Afrique francophone, avec l’outil immich-go qui lit directement les exports Takeout sans étape intermédiaire complexe.

Prérequis

  • Immich en production (voir Déployer Immich).
  • Compte Google avec Google Photos rempli.
  • VPS ou poste local avec 200 Go d’espace libre temporaire.
  • Connexion internet stable (export Takeout 50k photos = 100-200 Go).
  • Niveau attendu : intermédiaire.
  • Temps estimé : 1 jour pour Takeout + import (interventions ponctuelles).

Étape 1 — Lancer Google Takeout

Sur takeout.google.com, sélectionner uniquement Google Photos. Options recommandées :

  • Format : .tar (préservé) ou .zip.
  • Taille de fichier : 50 Go (limite max). Téléchargements en 2-4 fichiers pour 50k photos.
  • Mode de livraison : envoyer un lien par email.

Google met 2 à 24 heures à préparer l’export. Vous recevez ensuite un email avec lien de téléchargement valide 7 jours.

Étape 2 — Télécharger et stocker l’export

Sur le VPS Immich (ou poste local) :

mkdir /tmp/takeout
cd /tmp/takeout
# Coller le lien Google et lancer wget pour chaque fichier
wget "https://accounts.google.com/CheckCookie?continue=https%3A%2F%2Ftakeout.google.com%2F..." -O takeout-001.tar
# Répéter pour chaque fichier
# Total : 100-200 Go pour 50k photos

Astuce : utiliser aria2c pour téléchargement multi-thread plus rapide.

Étape 3 — Extraire les archives

cd /tmp/takeout
for f in *.tar; do tar xf "$f"; done
# Pour zip
for f in *.zip; do unzip "$f" -d ./; done
# Structure résultat : /tmp/takeout/Takeout/Google Photos/Album X/photo.jpg + photo.json

Étape 4 — Installer immich-go

immich-go est l’outil officiel communautaire pour migrer Takeout vers Immich. Il préserve les albums, les descriptions, les métadonnées GPS via les fichiers .json Takeout.

curl -L https://github.com/simulot/immich-go/releases/latest/download/immich-go_linux_amd64.tar.gz | tar xz
chmod +x immich-go
mv immich-go /usr/local/bin/

Étape 5 — Créer une API key Immich

Dans Immich web : Settings → API Keys → New → nommer migration-takeout. Copier la clé (visible une seule fois).

Étape 6 — Test sur un petit lot

Avant l’import complet, tester sur 100 photos :

cd /tmp/takeout/Takeout/Google\ Photos
ls | head -1  # Choisir un album
immich-go upload \
  --server=https://photos.votre-famille.com \
  --key=VOTRE_API_KEY \
  --google-photos \
  --create-albums \
  --auto-archive \
  ./AlbumX

Vérifier dans Immich web que les 100 photos sont bien là, dans l’album, avec date et lieu corrects.

Étape 7 — Lancer l’import complet

immich-go upload \
  --server=https://photos.votre-famille.com \
  --key=VOTRE_API_KEY \
  --google-photos \
  --create-albums \
  --auto-archive \
  --skip-extensions=mov,mp4 \
  --log-level=info \
  ./Takeout/Google\ Photos

Pour 50 000 photos sur Hetzner CX42 + Storage Box NFS, comptez 4 à 8 heures. Un screen ou tmux est utile :

tmux new -s migration
# Lancer immich-go
# Ctrl+B puis D pour détacher

Étape 8 — Importer les vidéos

Les vidéos MP4/MOV sont volumineuses. Faire un second pass dédié :

immich-go upload \
  --server=... --key=... \
  --google-photos \
  --include-extensions=mov,mp4,mkv \
  ./Takeout/Google\ Photos

Étape 9 — Vérifier la déduplication

Immich détecte automatiquement les doublons via hash. Settings → Jobs → Duplicate Detection. Vérifier le rapport. Pour 50k photos issues de Google + WhatsApp + AirDrop, comptez 2-8% de doublons typiquement.

Étape 10 — Nettoyer Google Photos (optionnel)

Une fois la migration validée à 100% (vérifier nombre de photos, dates extrêmes, albums présents) :

  1. Garder Google Photos en lecture seule pendant 30 jours pour vérifier que vous ne manquez rien.
  2. Désactiver l’auto-upload Google Photos sur tous vos téléphones.
  3. Activer auto-upload Immich Mobile à la place.
  4. Au jour J+30, supprimer toutes les photos Google Photos via interface web ou via le mode « Free up space ».

Erreurs fréquentes

Erreur Cause Solution
Métadonnées GPS perdues JSON Takeout non lu Vérifier que immich-go trouve les .json à côté des .jpg
Albums non créés Flag –create-albums oublié Relancer avec ce flag
Live Photos splittées iPhone export en deux fichiers immich-go gère, vérifier que .HEIC + .MOV sont à côté
Doublons multiples Plusieurs lancements sans dédup Job duplicates Immich + suppression batch
RAM saturée VPS Trop de jobs ML simultanés Pause auto-upload mobile pendant import
API key invalide Espaces parasites collés Régénérer + recopier sans espace
Takeout incomplet Lien Google expiré Re-demander un nouveau Takeout

Cas pratiques en zone UEMOA

Trois précisions. Téléchargement Takeout : 200 Go en 4G partagée à Saint-Louis prend 50+ heures. Faire le download depuis le VPS Hetzner directement (gigabit) plutôt que depuis votre poste local. Bande passante mobile : pendant la phase de transition (Google + Immich actifs), désactiver auto-upload Google Photos pour économiser data 4G. Comptes familiaux : Google Photos partage parfois entre conjoints. Effectuer la migration depuis chaque compte indépendamment, puis fusionner dans un album partagé Immich.

Tutoriels frères

FAQ

Et iCloud Photos ? Export via Apple Privacy → Request a copy. Format différent (pas de JSON par fichier). Outil icloud-photo-downloader + import via immich-cli standard.

Les Live Photos sont-elles préservées ? immich-go détecte la paire .HEIC + .MOV et les associe correctement. Affichage Live dans Immich Mobile.

Combien d’espace pour 50k photos ? Comptez 100-150 Go pour photos JPG/HEIC + RAW. Storage Box 1 To (3,20 €) suffit largement, avec marge pour 5-10 ans.

Que faire des fichiers .json après import ? Garder l’archive Takeout originale 90 jours sur Storage Box, puis supprimer. Immich a déjà extrait toutes les métadonnées.

Migration progressive ou en une fois ? Pour < 20 000 photos, en une fois. Pour > 50 000, par albums (par année par exemple) pour éviter saturation Postgres.

Pour explorer plus loin

Etape 1 : commander un Takeout Google complet

L’export Google Photos passe par Takeout. C’est la seule voie officielle pour recuperer toutes vos photos avec metadonnees. Pour 50 Go, comptez 6 a 24 heures de generation cote Google. Pour un studio a Dakar avec 500 Go, l’export est livre en plusieurs archives de 50 Go a telecharger.

# Steps Takeout
1. Aller sur takeout.google.com
2. Cliquer "Tout deselectionner"
3. Cocher uniquement "Google Photos"
4. Optionnel : choisir des albums precis
5. Format de livraison : .zip, taille max 50 Go par archive
6. Mode de livraison : email avec liens de telechargement

Vous recevez un email avec autant de liens que d’archives. Telechargez tout dans un dossier dedie, ne les ouvrez pas encore.

Etape 2 : extraire et organiser les archives

Une fois les archives recues, on extrait dans un repertoire de travail. Sur Linux, unzip suffit. Sur Windows, 7-Zip evite les problemes de chemins longs frequents avec les noms de fichiers Google Photos.

# Extraction Linux
mkdir -p /data/takeout-raw
cd /data/takeout-raw
for z in ~/Downloads/takeout-*.zip; do
  unzip -q "$z"
done

# Verification structure
ls Takeout/Google\ Photos/ | head
# Sortie : Photos from 2018, Photos from 2019, Album Mariage, etc.

Vous obtenez une arborescence par annee et par album. C’est le format brut sur lequel on va travailler. Ne renommez rien tant que la migration n’est pas finie.

Etape 3 : reparer les metadonnees EXIF avec immich-go

Le piege majeur du Takeout : Google met les vraies dates et coordonnees GPS dans des fichiers .json a cote des photos, pas dans l’EXIF. Importer brut ferait perdre la chronologie. L’outil immich-go (open source, communautaire) repare cela automatiquement.

# Telecharger immich-go (verifier la derniere release)
wget https://github.com/simulot/immich-go/releases/latest/download/immich-go_Linux_x86_64.tar.gz
tar xzf immich-go_Linux_x86_64.tar.gz
chmod +x immich-go

# Tester en dry-run d'abord
./immich-go upload \
  -server=https://immich.example.com \
  -key=$IMMICH_API_KEY \
  -google-photos /data/takeout-raw/Takeout \
  -dry-run

Le dry-run liste ce qui serait fait sans rien envoyer. Verifiez que le nombre de fichiers detectes correspond a votre attente avant de lancer l’import reel.

Etape 4 : creer la cle API Immich

Immich utilise une cle API par utilisateur pour les imports en masse. On la genere dans l’interface web, puis on l’exporte en variable d’environnement pour ne pas la coller en clair dans les commandes.

# Dans Immich web :
1. Profil > Account Settings
2. API Keys > New API Key
3. Nom : "migration-takeout-2026"
4. Copier la cle (visible une seule fois)

# Dans le shell :
export IMMICH_API_KEY="votre-cle-ici"
echo "$IMMICH_API_KEY" > ~/.immich-key
chmod 600 ~/.immich-key

La cle est sensible : elle donne acces ecriture a tout le compte. On la stocke en mode 600 et on la revoque apres la migration via la meme interface.

Etape 5 : lancer l’import reel

Une fois le dry-run validee, on lance l’import sans flag. Pour 100 Go, comptez 4 a 12 heures selon la bande passante de votre serveur. Lancez dans tmux ou screen pour pouvoir fermer la session SSH sans interrompre l’upload.

tmux new -s immich-import

./immich-go upload \
  -server=https://immich.example.com \
  -key=$IMMICH_API_KEY \
  -google-photos /data/takeout-raw/Takeout \
  -create-albums

# Detacher tmux : Ctrl+B puis D
# Reattacher plus tard : tmux attach -t immich-import

Le compteur progresse fichier par fichier. A la fin, vous voyez un recapitulatif « X uploaded, Y duplicates skipped, Z errors ». Notez ce chiffre, il servira au controle qualite.

Etape 6 : dedoublonner les imports anciens

Si vous aviez deja importe quelques photos manuellement avant la migration, des doublons apparaissent. Immich detecte la plupart par hash, mais pas tous (un meme fichier converti en JPEG apres re-encodage echappe a la detection). On lance le job dedupe natif.

# Dans Immich web :
1. Administration > Jobs
2. Section "Duplicate Detection"
3. Cliquer "Reset" pour forcer un re-scan
4. Patience : 2-6 heures selon la library
5. Reviews > Duplicates pour valider/supprimer

L’interface presente les paires suspectes cote a cote. Vous gardez la meilleure version (souvent la plus lourde) et supprimez l’autre. C’est un travail manuel, pas plus de 30 minutes pour 1000 doublons potentiels.

Etape 7 : restaurer les albums Google Photos

Avec le flag -create-albums, immich-go recree dans Immich les albums tels qu’ils existaient dans Google Photos. La structure d’origine est preservee : « Mariage Awa 2023 », « Voyage Saly 2024 », etc. Pas besoin de reconstruire a la main.

# Verifier les albums crees
curl -H "x-api-key: $IMMICH_API_KEY" \
  https://immich.example.com/api/album \
  | jq '.[] | .albumName'

# Sortie attendue : un par album Google Photos d'origine

Si un album manque, c’est generalement parce qu’il etait partage et non possede par votre compte Google. Demandez au proprietaire de l’exporter de son cote.

Etape 8 : cloturer la migration et fermer Google Photos

Avant de supprimer quoi que ce soit chez Google, on valide que tout est present cote Immich. On compare les compteurs : nombre total de photos, plages de dates, presence des albums cles. Une fois validee, on attend 30 jours minimum avant de supprimer cote Google, par securite.

# Comptage Immich via API
curl -H "x-api-key: $IMMICH_API_KEY" \
  https://immich.example.com/api/server-info/statistics \
  | jq '.usage'

# Comparer avec Google Photos :
# photos.google.com > Reglages > Stockage

Si les deux totaux concordent a 1 % pres, vous pouvez archiver le Takeout local et programmer la suppression Google Photos. Activez aussi un backup Restic immediat de votre nouvelle library pour cloturer la chaine. Decouvrez notre guide pour automatiser les backups Immich avec Restic.

FAQ

Combien de temps pour 1 To de photos ?

Comptez 24 a 72 heures selon votre debit upload. Au Senegal, une fibre 100 Mbps donne environ 12 Go par heure en upload reel.

Les videos passent-elles aussi ?

Oui, immich-go gere photos et videos avec leurs metadonnees. Verifiez juste que votre serveur Immich a assez d’espace disque libre avant de lancer.

Partager