Views: 27
VPS安装服务配置越来越多,为防止自己操作失误或者机器嘣了,借助Rclone工具备份到自己网盘。
1、安装Rclone
sudo -v ; curl https://rclone.org/install.sh | sudo bash

2、借助rclone连接Google drive,除在vps上操作外也需要在本地电脑操作。
2.1、安装完成后,在vps运行
rclone config

2.2、操作流程,下述供参考,大致是这样:
输入 n (New remote)。 name: 输入 drive (或者你喜欢的名字)。 Storage: 找到 Google Drive 的编号(通常是 22左右,输入编号回车)。 client_id / client_secret: 直接回车(留空)。 scope: 输入 1 (Full access)。 service_account_file: 直接回车(留空)。 Edit advanced config?: 输入 n。 Use web browser to automatically authenticate?: ⚠️ 这里必须选 n (No)。

2.3、最终vps端会显示出一段代码,比如:rclone authorize “drive” “xxxxxxxx…”
2.4、电脑端上官网下载对应的程序,解压,文件夹路径栏输入“cmd”,复制粘贴上述relone代码回车。如下图:



2.5、复制cmd得出的代码粘贴回vps,
Configure this as a shared drive? n (除非你是团队盘)。 确认配置信息,输入 y。 输入 q 退出。
3、开始创建备份任务并定时每日执行。
#创建文件
nano /root/backup.sh
#自动备份脚本
#!/bin/bash
# ================= 配置区域 =================
# 你的 Rclone 远程名称 (通过 rclone config 查看)
# 例如: "gdrive:VPS_Backup" 或 "onedrive:Netcup_Backup"
REMOTE_NAME="drive:NetcupBackup"
# 本地要备份的核心目录 (基于之前的排查结果)
# 我们只备份存放了实际数据的目录,避开系统垃圾
SOURCE_DIRS=(
"/root/ver"
"/root/word"
"/root/wordpress"
"/root/n8n"
"/root/n8n_uploads"
"/root/nginx"
"/root/.nezha-agent" # 如果有的话
)
# 备份日志文件路径
LOG_FILE="/var/log/rclone_backup.log"
# ===========================================
echo "----------- 开始备份: $(date) -----------" >> $LOG_FILE
# 这样恢复时,你知道该拉取哪些镜像,运行哪些容器
echo "正在导出 Docker 容器和镜像清单..."
mkdir -p /root/docker-metadata
docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" > /root/docker-metadata/containers_list.txt
docker images > /root/docker-metadata/images_list.txt
# 备份所有找到的 docker-compose.yml 文件
find /root -name "docker-compose.yml" -exec cp --parents {} /root/docker-metadata/ \;
# 将元数据目录加入备份列表
SOURCE_DIRS+=("/root/docker-metadata")
# 2. 循环执行增量同步
for DIR in "${SOURCE_DIRS[@]}"; do
if [ -d "$DIR" ]; then
DIR_NAME=$(basename "$DIR")
echo "正在备份目录: $DIR ..."
# 使用 sync 进行增量备份 (只上传修改过的文件,节省带宽和CPU)
# --exclude 排除常见的临时文件和日志
rclone sync "$DIR" "$REMOTE_NAME/$DIR_NAME" \
--exclude "logs/" \
--exclude "*.log" \
--exclude "tmp/" \
--progress \
>> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
echo "✅ 成功: $DIR"
else
echo "❌ 失败: $DIR" >> $LOG_FILE
fi
else
echo "⚠️ 跳过: 目录不存在 $DIR" >> $LOG_FILE
fi
done
# 3. 只有当确实有重要脚本在 /root 根目录时,才备份单个文件
# 避免备份整个 /root 导致死循环
rclone copy /root/nezha.sh "$REMOTE_NAME/scripts/" >> $LOG_FILE 2>&1
rclone copy /root/status.sh "$REMOTE_NAME/scripts/" >> $LOG_FILE 2>&1
echo "----------- 备份结束: $(date) -----------" >> $LOG_FILE
echo "备份完成!日志已写入 $LOG_FILE"
赋予脚本执行权限和执行
#赋予权限 chmod +x /root/backup.sh #执行 /bin/bash /root/backup.sh #先手动一次试试,没问题放入定时任务。 0 4 * * * /bin/bash /root/backup.sh >/dev/null 2>&1
最终搞定。
版权声明:本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。
转载请注明来自 网上另居。



