- 低依赖,低代码
- 灵活配置,流程清晰
- 创建 python 虚拟环境:
mkdir /home/auto-backup cd /home/auto-backup python3 -m venv . source /home/auto-backup/bin/activate
- 安装依赖:
pip install PyDrive2
- 代码部署:将
gd_backup.py
和gd_conf.ini
放置到目录下wget https://raw.githubusercontent.com/Jared-02/auto-backup/main/gd_backup.py wget https://raw.githubusercontent.com/Jared-02/auto-backup/main/gd_conf.ini
-
到控制面板启用 Google Drive API
-
创建 OAuth 同意屏幕: 用户类型选择外部,添加测试用户
如果你要部署长期自动化,请点击
发布应用
为正式版。否则刷新令牌有效期过短,你需要频繁进行授权以更新令牌。 -
创建应用授权凭据
创建凭据 > OAuth 客户端 ID > 应用类型 > Web 应用
已获授权的重定向 URI:
http://localhost:8080/
-
在 Google Drive 根目录创建一个新文件夹
-
打开新建的文件夹,复制 URL 中的文件夹 ID,如
https://drive.google.com/drive/folders/<FolderID>
中的<FolderID>
-
将文件夹名和文件夹 ID 填写到
gd_conf.ini
中的云端备份存放目录 -
请确认
gd_conf.ini
中的配置项填写完毕,并将client_secrets.json
置于相同工作目录下,再进行下一步。
-
首次备份请手动执行,交互式保存凭据,以下在虚拟环境下运行:
# cd /home/auto-backup # source /home/auto-backup/bin/activate (auto-backup) # python gd_backup.py
如果你的脚本运行环境在远程服务器,你需要通过 SSH 隧道转发本地端口以完成重定向验证:
ssh -L 8080:localhost:8080 [email protected] -N
如果使用密钥登录:
ssh -i path/to/key -L 8080:localhost:8080 [email protected] -N
退出虚拟环境:
deactivate
-
查看备份历史记录,依据你在
gd_conf.ini
中的store_backup_path
配置,日志文件在该目录中的.log
路径下:# ls -l /home/example-path/.log -rw-r--r-- 1 root root 894 Mar 5 04:00 history.json -rw-r--r-- 1 root root 2787 Mar 5 04:00 run.log # jq '.' /home/example-path/.log/history.json ... # tail /home/example-path/.log/run.log ...
请不要随意修改持久化记录!
-
每日自动备份(依赖哪吒面板计划任务,可提供通知功能):
-
将以下内容写入
run.sh
存放到工作目录:#!/bin/bash source /home/auto-backup/bin/activate python '/home/auto-backup/gd_backup.py'
-
哪吒面板:任务 > 新增计划任务
- 名称:自动备份
- 任务类型:计划任务
- 计划:
0 0 4 * * *
(示例:每日 4 时备份) - 命令:
cd /home/auto-backup && ./run.sh
-
-
每日自动备份(无依赖):
-
将以下内容写入
run.sh
存放到工作目录:#!/bin/bash source /home/auto-backup/bin/activate python '/home/auto-backup/gd_backup.py'
-
创建系统级 cron 任务(示例:每日 4 时备份)
# vim /etc/cron.d/auto-backup 0 4 * * * root cd /home/auto-backup && "./run.sh" > /dev/null 2>&1
-
重载 cron
/etc/init.d/cron reload service cron status
-