如何使用gphotos-sync将Google Photos备份到您的计算机

gphotos-sync 是用于在Linux,macOS和Windows上使用Google Photos Library API备份Google Photos(包括单独的相册)的命令行工具。定期使用它来抓取所有新添加的照片,并在服务器或台式机上保留完整的Google Photos备份在Google宣布从2019年7月10日开始Google相册将停止与云端硬盘同步后,此工具特别有用,这意味着某些将Google相册备份到您的计算机的工具将停止工作(影响 例如,Insync,一个在Linux,macOS和Windows上运行的商业Google Drive客户端。

gphotos-sync可以备份用户上传到Google相册的所有照片,以及使用Google相册自动创建的其他照片,例如动画,全景图,电影,增强型照片或拼贴。此应用程序仅适用于Google相册下载/备份。目的。它无法将照片上传到Google相册。
第一次完全同步将创建2个目录:

  • 照片,其中包含按年/月子文件夹结构组织的所有Google相册和视频(photo/YYYY/MM
  • 相册,其中包含一个文件夹层次结构,表示您的媒体库中的相册和共享相册集(albums/YYYY/MM Original Album Name)。由于此文件夹包含的照片与photos /中的照片相同,因此相册/中的图像是从photos /中的照片的符号链接。

随后运行的gphotos-sync与相同的根文件夹将刷新上一次扫描后添加到您的Google相册中的所有新照片的本地副本。尽管如此,它不会更新在Google相册中修改的任何照片,因为无法找出Google相册中图片的修改日期。
还要注意的是,Google Photos Library API会从图像EXIF信息中去除GPS数据( 公开的问题 Gfor this)。gphotos-sync页面包含针对此问题的解决方法,说明了 在这里,我没有尝试。
gphotos-sync功能/选项包括:

  • 从Google相册下载您的所有图像和视频,包括由Google相册自动创建的图像和视频(动画,全景图,电影,增强型照片或拼贴画)
  • 抓取自上次同步以来添加到您的Google相册帐户的所有新照片
  • (可选)仅下载和同步单个专辑(使用 --album "ALBUM NAME"
  • 将您的Google Photos帐户中的图像与本地文件夹(例如上一个备份)进行比较。比较不需要将文件放在同一文件夹中,而是使用文件中的元数据(例如创建日期和exif UID)进行匹配对物品(使用 --compare-folder "COMPARE_FOLDER")看 这个连结 了解更多信息
  • 删除索引数据库并重新扫描所有内容(--flush-index
  • (可选)重新扫描整个库,而忽略最后一次扫描日期(--rescan
  • 检查是否存在标记为已下载的文件,然后重新下载所有丢失的文件。如果您删除了一些本地文件,请使用此文件(--retry-download
  • 同步时跳过视频(--skip-video
  • 设置文件的开始和结束日期以采用以下格式进行同步 YYYY-MM-DD--start-date START_DATE / --end-date END_DATE
  • 刮取Google Photos网站的位置元数据,并将其添加到本地文件的EXIF元数据中(--get-locations

在使用gphotos-sync之前,我建议阅读 已知问题和局限性

安装和设置gphotos-sync

如何在Windows上安装gphotos-sync
此工具使用Google Photos API,并且需要您创建一个新的Google Cloud项目,为您的项目启用Photos API并为其设置OAuth 2.0,因此您可以使用自己的API密钥,以避免遇到API限制。 API仍然存在一些限制,但是您将是唯一使用它的人。下面的指南的第一部分用于安装gphotos-sync,第二部分用于在gphotos-sync中使用您自己的API密钥(并非没有这个就行不通)。安装 gphotos-sync 在Linux上使用pipenv:
1.安装pip3:

sudo apt install python3-pip
  • 软呢帽:
sudo dnf install python3-pip
  • Arch Linux,Manjaro:
sudo pacman -S python-pip
  • openSUSE:
sudo zypper install python3-pip

2.出口 ~/.local/bin 如果还没有,请在PATH中(在此存储使用pip3安装的软件包的可执行文件):

  • 对于Bash:
echo "export PATH="$PATH:$HOME/.local/bin"" >> ~/.bashrc

. ~/.bashrc
  • 对于Zsh:
echo "export PATH="$PATH:$HOME/.local/bin"" >> ~/.zshrc

. ~/.zsh

3.安装pipenv,在主目录中创建一个名为gphotos-sync的文件夹,然后使用pipenv安装gphotos-sync:

python3 -m pip install pipenv
mkdir ~/gphotos-sync
cd ~/gphotos-sync
pipenv install gphotos-sync

您现在可以运行gphotos-sync,例如:

pipenv run gphotos-sync

您需要在 ~/gphotos-sync 文件夹(因此您必须 cd ~/gphotos-sync,然后使用 pipenv run gphotos-sync)。您可以使用其他文件夹/路径,但请记住替换所有出现的 ~/gphotos-sync 在本指南中使用您的自定义位置。创建一个Google Cloud项目,启用照片库API并创建一个OAuth客户端ID:
1.创建一个新的Google Cloud项目
前往 https://console.cloud.google.com/cloud-resource-manager 并创建一个新项目。
有关此步骤的帮助,请参阅Google Cloud文档以创建项目https://cloud.google.com/resource-manager/docs/creating-managing-projects
2.前往 https://console.cloud.google.com/apis/library?project=_,选择一个项目,然后搜索照片库API并为此项目启用它。
可在以下位置找到有关启用API的Google Cloud帮助: https://cloud.google.com/apis/docs/enable-disable-apis
3.前往 https://console.cloud.google.com/,请确保从顶部下拉菜单中选择了正确的项目,然后单击侧栏中的API和服务,最后单击侧栏中的凭据。创建一个创建OAuth客户端ID。当系统要求您选择应用程序类型时,选择“其他”。
您可以在上看到有关使用新项目设置OAuth 2.0的完整过程 https://support.google.com/cloud/answer/6158849
4,一旦创建了客户端ID,就将其下载为client_secret.json(因此将其重命名,因为它将具有更长的名称)并将其保存在应用程序配置目录下:

  • 〜/库/应用程序支持/ gphotos-sync /在Mac OS X下
  • 〜/ .config / gphotos-sync /在Linux下
  • C:用户Windows下的 AppData Local gphotos-sync gphotos-sync

现在是时候将完整的Google相册完整备份备份到计算机了。为此,您需要运行 pipenv run gphotos-sync~/gphotos-sync 文件夹,然后是该工具应将所有Google Photos下载到的路径。例如,将所有Google Photos下载到 ~/gphotos-sync 文件夹,使用:

cd gphotos-sync
pipenv run gphotos-sync ~/gphotos-sync

首次运行gphotos-sync时,需要使用您的Google(照片)帐户进行授权,然后会在终端中显示一个链接。
您需要复制终端中显示的链接,然后将其粘贴到网络浏览器中。它将显示“此应用尚未通过Google验证”的页面。这是正常现象,因为该应用正在使用您的API密钥,并且您没有将其提交给Google进行验证。在此屏幕上,请点击 Advanced,然后点击 Go to Your_Gogle_Cloud_Project_Mame (unsafe)点击 Allow 出现提示时,然后复制Google OAuth页面显示的代码,将其粘贴回终端中,然后按 Enter
运行相同的命令(pipenv run gphotos-sync ~/gphotos-sync 每次要更新Google Photos的本地备份时,请注意在我的示例中的gphotos-sync文件夹中。值得注意的是,在将新照片上传到Google Photos后,您需要稍等片刻(例如,使用网络界面)或通过您的手机),因为它将无法立即用于下载/备份。
请参阅应用程序的帮助(pipenv run gphotos-sync --help)以获取高级用法和更多选项。

Sidebar