V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zx900930
V2EX  ›  Google

从 Google Photos 无缝迁移到 immich

  •  1
     
  •   zx900930 · 2023-06-24 19:18:21 +08:00 · 7919 次点击
    这是一个创建于 550 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近 Gmail 收到一封邮件说是 7 月份就不能用 takeout 批量导出 Archive Albums 了, 我之前 Blogger 上存的图片不多, 绝大部分都在 Google Photos 里面.

    想着这样下去指不定哪天 Google 就把 Google photos 的免费 takeout 关了, 想想上面还是存了几千张照片的.

    而且因为最近都一直用 immich 代替 google photos, 体验也挺不错的, 干脆把 Google photos 里的旧照片打包弄出来导入 immich, 完全告别 google photos.

    于是看到了这个 issue https://github.com/immich-app/immich/discussions/1340 正是我想要的

    想了解 immich 功能的可以看看项目地址 https://github.com/immich-app/immich 更新非常频繁而且时不时有 breaking change, 如果想稳定使用建议固定版本或者更新服务端前仔细阅读 changelog

    首先肯定是去 takeout.google.com 把你的照片打包弄出来, 最好选择英语导出, 我只选了 Google photos 和 AlbumArchive, 格式 zip, 单个包直接选 50G, 反正系统很新不怕解不了压. 几个小时后就收到 Google 的邮件和下载链接了.

    然后重要的地方是: 把下载好解压出来的 Takeout 文件夹复制到你 linux 文件系统里, 不要在挂载的 smb 共享里操作, 因为文件系统的区别(比如大小写敏感度的不同), issue 里提到的几个工具都有可能会报错!

    接下来就是选择你希望的导入方式, 如果你想保留 google photos 里面的一个个的相册. 那么可以用https://github.com/MrYakobo/exif-wrapper这个脚本 它会在你的 Takeout/Google Photos 里生成 mattwilson1024/google-photos-exif 这个工具需要的文件夹 然后你就可以用 bash 脚本批量上传到你的 immich 服务器

    #!/bin/bash
    
    KEY="YOURKEYHERE"
    SERVER="https://photos.yourdomain.com/api"
    BASE_DIR="/foo/bar/Takeout/Google Photos/AlbumsProcessed"
    
    # Change the working directory to BASE_DIR
    cd "$BASE_DIR"
    
    for album in "$BASE_DIR"/*; do
      if [ -d "$album" ]; then
        echo "Uploading album: $album"
        immich upload \
          -y \
          --key "$KEY" \
          --server "$SERVER" \
          -d "$album" -t 16 -al
      fi
    done
    

    我自己选择的是第二个工具, 因为我从来没有手动整理过 Google 相册, 所以我只需要简单的时间线和地理位置就行了, 而且相比第一个工具, 第二个工具能处理的文件扩展名更多 https://github.com/garzj/google-photos-migrate

    我用的 ubuntu cloud 22.04 的虚拟机, 用别的发行版的可以自行改动一下 先安装 nodejs, 注意版本需要>=14, 我这里装 16 并安装 Yarn 包管理器

    curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
    
    sudo apt install gnupg2
    curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    sudo apt update && sudo apt install yarn
    

    然后下载 google-photos-migrate 并安装依赖

    git clone https://github.com/garzj/google-photos-migrate.git
    cd google-photos-migrate
    
    yarn
    

    此时要注意, 如果你 takeout 选择的语言不是英语, 需要修改 src/meta/find-meta-file.ts 加入你相册里面可以看到的对应语言的'edited'后缀, 不加的话这部分的图片会找不到对应的 meta file.

    woExt = woExt.replace(/-(edited|bearbeitet|modifié)$/i, '');
    

    修改完保存然后继续编译执行

    yarn build
    
    mkdir output error
    yarn start '/path/to/takeout/Google Photos' './output' './error'
    

    等待它执行完, 你需要上传的就是 output 文件夹里的内容, 重复的会放在 /output/duplicateXX 文件夹里, 可以自行决定删除哪个, 也可以直接上传, immich 会过滤掉 hash 一致的图片, 如果还有重复的估计就是缩略图, 自己看着删除或者写个比较大小的脚本删吧.

    上传直接用 immich cli 就行了

    yarn add immich
    
    yarn immich upload --key YOUR_IMMICH_API_KEY --server http://docker.lan:3001 --recursive /home/bar/google-photos-migrate/output/
    

    注意一下, immich 新加的 typesense 识图的时候会把 cpu 吃饱(我的 13400 直接 16 线程吃满 90%了...), 如果你上传的虚拟机不幸卡死, 可以等 immich 服务器那边 load 下去以后, 再上传一次, 它会自动对比云端和本地的文件, 不会上传重复的照片.

    上传完就可以和 Google Photos 说再见了. 当然如果你用的 icloud 之类的,可以先把 icloud 的图片全部下载到手机, 然后用 immich 的 app 同步手机里的图片视频到 nas, 同步完以后再关闭 icloud 的图片同步功能, icloud 会直接腾出空间给你同步其它的内容, 照片会在暂存一个月后永久删除.

    43 条回复    2024-02-07 23:47:44 +08:00
    stephen2009
        1
    stephen2009  
       2023-06-24 20:31:30 +08:00
    楼主好,使用 rclone 挂载网络硬盘(比如 onedrive ),然后把照片储存在网络硬盘上,这样情况下,可以使用 immich 吗?谢谢!
    zx900930
        2
    zx900930  
    OP
       2023-06-24 20:35:19 +08:00
    @stephen2009 只要你能挂载到你的文件系统下,immich 就能处理,我 immich 的数据文件夹就是远程挂载的。
    stephen2009
        3
    stephen2009  
       2023-06-24 20:46:54 +08:00
    @zx900930 #2 好的,immich 对硬件要求高吗?甲骨文 AMD 免费机不知道能不能带的动?
    ggmood
        4
    ggmood  
       2023-06-24 20:49:26 +08:00 via iPhone
    楼主感觉 OneDrive 算不算一个好的替代方案?我这里上传下载不算稳定,有时抽风
    0o0O0o0O0o
        5
    0o0O0o0O0o  
       2023-06-24 20:51:45 +08:00 via iPhone
    @stephen2009 #3

    immich 没端到端加密,开发者好像也明确说了不考虑加,绝对不建议跑云服务器上。
    winterbells
        6
    winterbells  
       2023-06-24 21:32:35 +08:00
    @ggmood 收费之后我就转到 Onedrive 了,速度还算可以,但客户端真的差劲(包括网页端)。刚上传的本地文件都还没删呢,点击查看就是已删除 /没权限。。
    zx900930
        7
    zx900930  
    OP
       2023-06-24 21:51:19 +08:00
    @stephen2009 只建议在 nas 上跑,不建议上公共云
    iooco
        8
    iooco  
       2023-06-24 21:59:24 +08:00 via Android
    @winterbells 我也是 onedrive 好废材的感觉 客户端不好用 win 的文件管理器照片多了加载缩略图好卡 我 tm 都 i9 了 还是卡 佛了 那个照片应用只能用个人账号 企业教育版的账号都用不了 不知道用起来咋样
    xlsepiphone
        9
    xlsepiphone  
       2023-06-24 23:07:48 +08:00
    目前我的照片都是先同步群晖 Photo ,群晖 syncthing 到 pixel ,pixel 无损备份到 Google Photos 。
    jeesk
        10
    jeesk  
       2023-06-25 01:05:47 +08:00
    @0o0O0o0O0o 加 https 不就行了吗? 如果服务厂商要查你文件, 你还真没办法。
    williamx
        11
    williamx  
       2023-06-25 07:24:49 +08:00
    嗯……什么情况需要 takeout ?
    0o0O0o0O0o
        12
    0o0O0o0O0o  
       2023-06-25 07:40:51 +08:00 via iPhone
    @jeesk 被黑的风险啊,谷歌微软有顶级团队来确保不被黑,自建哪有。
    lyz1990
        13
    lyz1990  
       2023-06-25 07:54:04 +08:00 via Android
    @xlsepiphone 我跟你一样的路径😬
    yyysuo
        14
    yyysuo  
       2023-06-25 08:46:15 +08:00
    @0o0O0o0O0o 大部分人的照片也没什么机密吧。
    0o0O0o0O0o
        15
    0o0O0o0O0o  
       2023-06-25 08:52:14 +08:00 via iPhone
    @yyysuo #14 选择自建服务的本来就是少数,在这个群体里我觉得注重数据安全的占比还是高一些的。
    winterx
        16
    winterx  
       2023-06-25 09:00:55 +08:00
    @xlsepiphone syncthing 是 docker 部署的吗?
    Planehi
        17
    Planehi  
       2023-06-25 09:01:25 +08:00 via Android
    我的服务器跑着 photoprism, 在犹豫要不要转 immich
    chronos
        18
    chronos  
       2023-06-25 09:22:22 +08:00
    @Planehi 我是从 Photoprism 转到 immich 的,第一感受就是浏览速度真快。immich 有 ios 和 android 的 app ,我在家里的 nas 使用 docker-compose 方式部署 immich server 后定期用 app 同步上传一下照片,也解决了我老婆的 iphone 只有 256G 但又经常给娃拍照拍视频导致空间不够用的问题。
    l4ever
        19
    l4ever  
       2023-06-25 09:35:56 +08:00
    我都是丢到"时光相册"的. 好像用了好多年也没关闭.
    Planehi
        20
    Planehi  
       2023-06-25 09:37:29 +08:00 via Android
    @chronos 大佬,我现在的方案是通过 app 同步到 nextcloud ,然后 photoprism 读取存储图片的路径内的所有文件,如果换 immich 的话用他的 app 上传图片,就得在 nextcloud 手动更新索引才能在 nextcloud 也显示照片,是不是会比较麻烦?还是说我应该把图片从 nextcloud 里搬出来单独存储会比较好?
    conky
        21
    conky  
       2023-06-25 09:39:56 +08:00
    感觉和我的 sysnology photo 没啥区别,就不搞了
    qW7bo2FbzbC0
        22
    qW7bo2FbzbC0  
       2023-06-25 09:43:58 +08:00
    刚好周末从 google photos 上批量把因为硬盘故障丢失的照片传回本地了,本地+syncthing 异机备份
    Misyo
        23
    Misyo  
       2023-06-25 09:55:23 +08:00
    immich 好像没人脸识别功能吧,看时间线说的是后面会增加
    chronos
        24
    chronos  
       2023-06-25 10:00:56 +08:00
    @Planehi 如果用 immich 就要用它的方式上传,nextcloud 那边就只能放弃了。
    chronos
        25
    chronos  
       2023-06-25 10:02:52 +08:00
    @Misyo 现在的版本已经加上了人脸识别,就是某些识别错误的人脸照片不能手动调整到正确的人脸名称上。
    willxiang
        26
    willxiang  
       2023-06-25 10:09:10 +08:00
    @winterbells #6
    onedrive 的搜图功能太差了,在 google 上搜一些关键字基本上能得到我想要的结果
    但是我还是转到 onedrive 了
    chronos
        27
    chronos  
       2023-06-25 10:10:44 +08:00   ❤️ 1
    @Planehi 刚刚发现昨天 immich 又更新了一版,添加了对只读的现有库的支持。看起来可以将 nextcloud 之类的现有的图片文件夹纳入进来。
    winterbells
        28
    winterbells  
       2023-06-25 10:18:00 +08:00
    @willxiang 我一直都以为它没这个功能。我之前试过汉字是搜不到的(只能搜到几张),几个月前的验光单也找不到了(因为缩略图很多不显示)
    willxiang
        29
    willxiang  
       2023-06-25 10:21:57 +08:00
    @winterbells #28
    能搜,但效果很烂,拿英文单词搜跟拿中文会搜到不同的结果

    会识别图片中的文字(比如搜“车”,保险单中包含“车”,于是搜出来一大堆保险单或者带车这个文字的截图)
    搜"car"会搜出汽车或者坐在汽车里的照片

    也可以加标签,但是总体来说跟谷歌的比,很烂
    jstony
        30
    jstony  
       2023-06-25 10:40:48 +08:00
    瞄了一眼,还是继续用我的群辉
    BlueBing
        31
    BlueBing  
       2023-06-25 10:54:13 +08:00
    前几天尝试 compose 安装,不太流畅。
    然后试用过程中总是莫名报错或卡住,数次重新安装未果,已被劝退。
    zx900930
        32
    zx900930  
    OP
       2023-06-25 11:14:43 +08:00
    @Misyo #23 新版本有人脸识别, 但是对侧脸, 或者小时候和长大后的脸识别还是有点弱, 可以手动打标签
    jeesk
        33
    jeesk  
       2023-06-25 11:26:21 +08:00
    @0o0O0o0O0o 我的建议是使用组网工具, 在隧道里面安全
    xlsepiphone
        34
    xlsepiphone  
       2023-06-25 13:49:31 +08:00
    @winterx #16 群晖 Docker 部署
    @lyz1990 #13 Pixel 长期插电,电池已经不行了,一断电就关机,PDD 买了块电池,准备自己换一下。
    52acca
        35
    52acca  
       2023-06-25 23:59:15 +08:00 via Android
    看了一下介绍,看来终于不用折腾黑群了
    7lQM1uTy635LOmbu
        36
    7lQM1uTy635LOmbu  
       2023-06-26 00:00:26 +08:00 via Android
    感谢,教程很详细很实用,我前段时间 k8s 造了个 immich ,正愁不知道咋 upload 之前的一堆就看到了你这个。
    lozzow
        37
    lozzow  
       2023-06-26 09:17:10 +08:00 via Android
    可以自己写识别的那个服务来中文化
    nanoswit
        38
    nanoswit  
       2023-07-03 10:58:54 +08:00
    感谢分享。正在做相同的操作,自己写了一个 python 脚本转换 GP 导下来的照片,这下可以抄作业了。
    Misyo
        39
    Misyo  
       2023-07-04 10:56:12 +08:00
    @zx900930 现在能自定义文件夹吗,好像还是只能 upload
    zx900930
        40
    zx900930  
    OP
       2023-07-04 11:07:50 +08:00
    @Misyo 不知道什么意思,那个 upload 不是路径是 immich 上传的 option 啊。
    你可以在后面定义你想上传的路径。
    Misyo
        41
    Misyo  
       2023-07-12 14:03:26 +08:00
    @zx900930 下载试用了一下,可以以不同设备及用户来备份及管理,可以在 Storage Template 中的 TEMPLATE 参数调整,但对于已有的照片及视频还不知道如何拿入 IMMICH 的管理(不采用 upload 的方式)
    wishuloveme
        42
    wishuloveme  
       2023-09-03 13:05:06 +08:00
    @Misyo 用 npm 命令直接可导入已有目录,本质上还是通过 api 上传给 immich 再做输入,因此 immich 的 db 备份极为重要
    ixdeal
        43
    ixdeal  
       322 天前
    各位如果手机重置,如何把备份到 immich 中的图片/视频导回到新手机中?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1072 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:09 · PVG 03:09 · LAX 11:09 · JFK 14:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.