在Linux上用Duplicity备份文件到Google Drive遇格式错误求助
解决Duplicity备份Google Drive时的google.auth.exceptions.MalformedError错误
问题场景
在Linux桌面使用Duplicity备份文件到Google Drive,按官方文档完成项目创建、OAuth配置、环境变量设置后,执行备份命令时抛出错误:
google.auth.exceptions.MalformedError: Service account info was not in the expected format, missing fields client_email, token_uri
问题根源
你下载的JSON文件是OAuth客户端ID密钥,而非Duplicity所需的服务账户密钥文件,前者缺少client_email、token_uri等服务账户必填字段。
修复步骤
- 登录Google开发者控制台,进入
mybackup-12345项目 - 导航至「IAM与管理」→「服务账户」页面
- 找到对应服务账户
mybackup-12345@mybackup-12345.iam.gserviceaccount.com,点击操作栏的「密钥」→「添加密钥」→「创建新密钥」 - 密钥类型选择「JSON」,点击「创建」,将下载的新JSON文件替换原路径下的
/home/myuser/backups/google_client_secret_json_file.json - 若文件路径未变更,无需重新设置环境变量;若路径修改,更新
GOOGLE_SERVICE_JSON_FILE变量:export GOOGLE_SERVICE_JSON_FILE=/home/myuser/backups/[新文件名].json - 重新执行备份命令:
duplicity /home/myuser/Documents gdrive://${GOOGLE_SERVICE_ACCOUNT_URL}/backups/documents?myDriveFolderID=root
额外注意事项
- 确保服务账户邮箱已被授权访问目标Google Drive文件夹:若备份到非root文件夹,需在Drive中共享该文件夹给服务账户邮箱并赋予编辑权限
- 避免混用OAuth客户端密钥与服务账户密钥,Duplicity对接Google Drive服务账户时仅认可后者的JSON格式
内容的提问来源于stack exchange,提问作者Jean
相关产品推荐
相关产品推荐

