2019年7月以后谷歌相册备份到谷歌网盘的方法

2019年7月开始,谷歌相册不能再添加到谷歌网盘,这样谷歌相册不能实现再次备份。我一直使用的备份策略是:使用国外校友邮箱,上传原画质的图片到谷歌相册,谷歌相册添加到谷歌网盘的目录,使用rclone每天定期同步一份到另一个国外校友邮箱的谷歌网盘,同时使用群晖再下载一次谷歌相册的数据到本地,这样才能保证数据万无一失。
2019年7月以后谷歌相册与谷歌网盘不再相互同步,为了相册备份的问题我头疼了很久,最后只能使用谷歌的数据下载功能,建了一个任务每两个月自动打包下载谷歌相册的数据到谷歌网盘,然后再进行备份,这个方法有很多弊端,首先数据下载功能实现自动的话周期是每两个月一次,周期太长;其次,导出的数据要自己再次管理,很不方便;最后导出的数据时压缩包文件,还要再次解压很不方便。
就在前两天终于发现了还有一种方法能保持实时同步(思路源于达夕大佬博客),使用起来跟之前的备份策略差不多,使用的是gphotos-syncgithub地址)这个工具,使用的是Google Photo API功能,目前我已经完整的下载过一次相册数据了。

完成备份策略需要用到的一些环境配置:

1.Python3版本>3.6,这个是gphotos-sync工具的最低支持版本。
2、pip/pip3,用来安装gphotos-sync。
3、rclone,用来挂载谷歌网盘(googledirve)或者微软网盘(onedrive)。

安装Python3和pip3我用的是(行走的代码)提供的方法,使用之前要先运行一个命令export PATH=/usr/local/bin:$PATH ,否则脚本会报错,因为Python3默认安装在/usr/local/bin目录下,命令只对当前shell有效,后续需要使用/usr/local/bin/gphotos-sync来调用命令,也可以永久添加到系统环境变量。

安装完Python3和pip3以后就可以pip3 install gphotos-sync安装gphotos-sync了,申请Google Photo的访问token的方法请看(达夕大佬博客),我主要是介绍我利用centos 7系统(GCP,谷歌的服务出站入站都不计流量费用300美金试用aff)挂载谷歌网盘,把谷歌相册的相片直接下载到挂载盘上的方法,等于是直接传到了谷歌网盘上,又可以多个备份了。

如果直接使用命令/usr/local/bin/gphotos-sync /root/googlephotos/很容易报错,因为相册的索引数据文件也会放在网盘上,好在gphotos-sync提供了一个参数–db-path可以把数据索引文件放在本地磁盘上,这样就可以避免出错提示了。

  –db-path DB_PATH Specify a pre-existing folder for the index database.
                   Defaults to the root of the local download folders

不能直接运行的问题解决了以后,还可能会用到--only-index--skip-index(等于是分步执行,先索引文件,然后再开始下载相片),不知道是我的相片有问题还是google photo api的原因,运行一直不顺畅,经常出现文件下载失败的错误,然后程序就退出了,因此我就使用脚本来监控gphotos-sync的进程,配合crontab每分钟定时查看进程是否挂了,然后就顺利的把相册(大概60G)都下载完了,脚本内容如下:

#! /bin/sh 

proc_name="gphotos-sync"                   # 进程名  
file_name="/root/log/gpsync.log"        # 日志文件 
pid=0  

proc_num()                                # 计算进程数  
{  
    num=`ps -ef | grep $proc_name | grep -v grep | wc -l`  
    return $num  
}  

proc_id()                                 # 进程号  
{  
    pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`  
}  

proc_num  
number=$?  
if [ $number -eq 0 ]                      # 判断进程是否存在  
then   
    /usr/local/bin/gphotos-sync /root/googlephotos/ --db-path /root/gpsync --index-only >/dev/null 2>&1 &
    /usr/local/bin/gphotos-sync  /root/googlephotos/ --db-path /root/gpsync --max-retries 10 --max-threads 16 --skip-index >/dev/null 2>&1 &                         # 重启进程的命令
    proc_id                               # 获取新进程号 
    echo ${pid}, `date` >> $file_name    # 将新进程号和重启时间记录
fi

完成了一次完整的下载以后,每天的定时任务只需要使用--rescan参数(强制重新索引,保证文件最新)就可以了,crontab的定时任务命令如下:

#下载谷歌相册文件到谷歌云盘
20 3 * * * /usr/local/bin/gphotos-sync /root/googlephotos/ --db-path /root/gpsync --log-level warning --max-retries 10 --max-threads 16 --rescan  >/dev/null 2>&1 &

相片才是最重要的,得备份很多很多个,最近撸了oracle的永久免费小鸡,可以愉快地转存到onedrive上了。


感谢阅读,如有错误,欢迎指正。如果觉得对您有帮助,欢迎打赏,谢谢~

Last modification:October 15th, 2019 at 06:23 pm

17 comments

  1. petertao

    但这个好像下载下来的照片不是原文件,我查看了好多张,大小跟原文件都有点点差异

    1. A1
      @petertao

      我试了rclone下载的图片也是压缩过的,想要原始数据的唯一办法就只有用谷歌数据下载的功能,每6个月自动下载一次到谷歌网盘,或者时不时手工备份。

    2. A1
      @petertao

      我也看了下我的,的确是压缩过的图片和视频。要看看怎么解决才行。

      1. petertao
        @A1

        谷歌下载下来的太乱,每天一个文件夹,还得手动管理,还要把json文件删了,太麻烦
        不知道gphotos-sync这种方式有没有办法解决压缩的问题,可能是Google API的问题

  2. 老杨

    挂载命令用了哪些参数?

    1. A1
      @老杨

      我是开个screen开监控挂载情况,命令参考
      rclone mount gdrive:gphotos /home/gphotos –allow-non-empty –vfs-cache-max-age 20m0s –vfs-cache-mode writes -vv

      1. 老杨
        @A1

        --vv 是什么作用?我没用。看来 --db-path 这个是关键,数据库保存就本地就可以了。

        1. A1
          @老杨

          -vv是debug信息,可以看看Google API 的信息,因为Google drive有上传限额,很容易就用完,所以用debug可以知道问题出在哪里。

          1. 老杨
            @A1

            额,还是不稳,只能跑两分钟左右就挂掉……然后重开大硬盘 VPS,4个多小时,一次跑完了,133G……

            1. A1
              @老杨

              你没有使用脚本监控吗?我的一开始也是经常挂,所以我才使用脚本,挂了就重新来过,可能是你的图片太多了😂

              1. 老杨
                @A1

                应该不是图片太多引起,是 rclone 挂载兼容问题,容易 I/O 错误就挂掉。我用 crontab 定时,几分钟执行一次,第一天就搞到 API 超限了,囧……

                1. A1
                  @老杨

                  最新版本是1.49.1
                  https://rclone.org/install/

                2. A1
                  @老杨

                  是不是你的rclone版本太低了,之前的确出现过rclone挂载容易出错的问题,还有就是缓存的清理时间(–vfs-cache-max-age 20m0s)也要调小,硬盘不足也会出错的,我一直使用的是1.48的版本,很稳定。

                  1. 老杨
                    @A1

                    rclone v1.49.5 了,我到 GitHub 提交了 issues,后面新版本应该直接 rclone 直接同步 Google Photos 就好,现在 2000 年是写死了:https://github.com/rclone/rclone/issues/3630

                    1. A1
                      @老杨

                      好厉害的样子😁,等修复这个bug我也用rclone来同步了。

                      1. 老杨
                        @A1

                        已经支持设置开始同步年份了,1.52.0 版本。

                        1. 唧唧咕
                          @老杨

                          感谢提醒,很早就改成rclone同步了,现在还是会定期导出谷歌相册数据,毕竟那里面的才是真正的原画质。

Leave a Comment