Vps使用Rclone备份网盘

Views: 27

VPS安装服务配置越来越多,为防止自己操作失误或者机器嘣了,借助Rclone工具备份到自己网盘。

1、安装Rclone

sudo -v ; curl https://rclone.org/install.sh | sudo bash
Vps使用Rclone备份网盘

 

2、借助rclone连接Google drive,除在vps上操作外也需要在本地电脑操作。

2.1、安装完成后,在vps运行

rclone config

Vps使用Rclone备份网盘

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)。

Vps使用Rclone备份网盘

 

2.3、最终vps端会显示出一段代码,比如:rclone authorize “drive” “xxxxxxxx…”

2.4、电脑端上官网下载对应的程序,解压,文件夹路径栏输入“cmd”,复制粘贴上述relone代码回车。如下图:

Vps使用Rclone备份网盘

Vps使用Rclone备份网盘

Vps使用Rclone备份网盘

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 许可协议。

转载请注明来自 网上另居

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注