创建Google Drive API #
首先进入 Google API Console
创建一个项目(项目名称随便填写)
顶部搜索Google Drive API
启用它
点击左侧边OAuth权限请求页面(用户类型选择外部; 应用名称随便填写(比如“rclone”就可以); 用户支持电子邮件和开发者联系邮箱都填写您自己的就可以)
然后点击保存并继续,剩下的参数都是用默认就可以了。
创建完成后 点发布应用
点击左侧凭据
屏幕上方点击创建凭据»>选择OAuth 客户端ID
应用类型选择桌面应用
创建成功后,复制客户端 ID 参数和客户端密钥
安装并配置 rclone #
首先在 vps 上一键安装 rclone:
sudo -v ; curl https://rclone.org/install.sh | sudo bash
在 vps 上开始配置,执行:
rclone config
此时会看到:
2022/05/28 08:56:05 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
选择 n,新建配置:
名字随便填写,这里填写的是GoogleDrive
此时rclone会要你选择要挂载什么网盘,找到google drive并选择(这里18项就是 输入18即可)
然后我们粘贴第一步生成的客户端 ID 和客户端密钥
权限选择:完整的访问权限,就选择1即可。
scope输入1
service_account_file 为空 Edit advanced config 输入 n (不需要进行额外的高级配置) root_folder_id 为空 Use auto config 因为是要在 vps 上挂载,vps 没有桌面环境,因此必须选择 n
之后我们会看到
接下来在本地电脑上下载命令行操作的 rclone
下载在本地的 rclone 压缩包 然后解压
rclone下载地址:https://rclone.org/downloads
解压好后,shift+左键
选择打开命令行
复制红色方框的内容 粘贴到 cmd
然后浏览器胡弹出登录 Google »> 登录账号 »> 最后点继续
复制 cmd 生成的 config token到vps的config_token
如果要使用的是个人盘,就输入 n
挂载Goole Drive #
mkdir /GoogleDrive
开始挂载 (其中 GoogleDrive 是 rclone 配置时输入的配置名称,/GoogleDrive 是挂载目录,–daemon 是指后台运行。)
rclone mount GoogleDrive: /GoogleDrive --allow-other --allow-non-empty --vfs-cache-mode writes --daemon
此时可能会报错:
Fatal error: failed to mount FUSE fs: fusermount: exec: “fusermount”: executable file not found in $PATH
这是因为缺少依赖,我们选择安装
debian 系使用:
apt install -y fuse3
centos 系使用:
yum install -y fuse3
再次执行挂载命令,如果没有报错,就是挂载成功了。
检查挂载:
df -h
就可以看到挂载的目录了
接下来进入 /GoogleDrive进行一些简单的测试
cd /GoogleDrive
ls
mkdir test
rm -rf test
如果能够顺利执行,则说明挂载没有问题。
创建备份脚本 #
使用您喜欢的文本编辑器创建一个脚本文件,例如 backup.sh
:
nano /home/backup.sh
在脚本中添加以下内容:
#!/bin/bash
# 设置变量
BACKUP_DIR="/home" # 要备份的目录
MOUNT_DIR="/GoogleDrive/mastodon" # 挂载的 Google Drive 目录
TIMESTAMP=$(date +%Y%m%d%H%M) # 时间戳
BACKUP_FILE="backup-$TIMESTAMP.zip" # 备份文件名
PASSWORD="密码" # 设置解压密码
# 创建压缩备份并设置密码
if zip -r -P "$PASSWORD" "/tmp/$BACKUP_FILE" "$BACKUP_DIR"; then
echo "Backup created: /tmp/$BACKUP_FILE"
else
echo "Failed to create backup"
exit 1
fi
# 移动备份到 Google Drive 目录
if mv "/tmp/$BACKUP_FILE" "$MOUNT_DIR"; then
echo "Backup moved to: $MOUNT_DIR"
else
echo "Failed to move backup"
exit 1
fi
# 删除超过三天的备份
find "$MOUNT_DIR" -name "backup-*.zip" -mtime +3 -exec rm {} \;
保存并退出:
按 CTRL + X
,然后按 Y
以保存更改,最后按 Enter
。
赋予脚本执行权限 #
chmod +x /home/backup.sh
确保安装 zip 工具 #
对于 Debian/Ubuntu 系统
sudo apt update
sudo apt install zip
设置定时任务 #
打开 crontab 编辑器:
crontab -e
添加以下行以设置每天 12 点执行备份脚本:
0 12 * * * /home/backup.sh
按 CTRL + X
,然后按 Y
以保存更改,最后按 Enter
。