目 录CONTENT

文章目录

rclone定时备份文件到网盘

Leu
Leu
2025-10-13 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

前言

建站都遇到过vps宕机,没有备份网站,导致网站数据丢失。可以利用这个脚本,定时备份文件到网盘。

安装rclone

curl https://rclone.org/install.sh | sudo bash
rclone config

以mega网盘为例

脚本

#!/bin/bash

# ==== 可配置项 ====

# 要备份的目录(注意:末尾不要加 /)
source_dir="/备份目录"

# 本地备份目录
backup_dir="/本地备份目录"
mkdir -p "$backup_dir"

# rclone 远程路径(例如 gdrive:/backup)
remote="路径:/文件路径"

# ==== 自动变量 ====

# 当前时间戳(使用系统默认时区时间)
now=$(date +"%Y-%m-%d_%H-%M-%S")

# 文件名前缀(可传入参数,否则默认 "backup")
filename_prefix=${1:backup}

# 最终备份文件路径
backup_file="$backup_dir/${filename_prefix}_${now}.zip"

# ==== 开始打包 ====

# 提取父目录和目标目录名
parent_dir=$(dirname "$source_dir")
target_dir=$(basename "$source_dir")

echo "📦 打包 $source_dir 为 $backup_file"

cd "$parent_dir" || { echo "❌ 无法进入目录 $parent_dir"; exit 1; }

zip -r "$backup_file" "$target_dir" > /dev/null
if [ $? -eq 0 ]; then
    echo "✅ 压缩完成:$backup_file"
else
    echo "❌ 压缩失败"
    exit 1
fi

# ==== 上传到远程 ====

echo "📤 上传到远程:$remote"
rclone copy "$backup_file" "$remote" --quiet

# ==== 清理本地旧备份 ====

echo "🗑️ 清理本地备份,仅保留最近 3 个 ${filename_prefix}_*.zip..."

ls -1t "$backup_dir"/${filename_prefix}_*.zip 2>/dev/null | sed -e '1,3d' | while read old_file; do
    echo "🗑️ 删除本地旧备份:$old_file"
    rm -f "$old_file"
done

# ==== 清理远程旧备份 ====

echo "🗑️ 清理远程备份,仅保留最近 3 个 ${filename_prefix}_*.zip..."

rclone lsf "$remote" | grep "^${filename_prefix}_" | sort -r | awk 'NR>3' | while read file; do
    echo "🗑️ 删除远程旧备份:$file"
    rclone delete "$remote/$file"
done

echo "✅ 所有操作完成。"

设置定时任务

crontab -e

每天凌晨两点执行

0 2 * * * /脚本路径

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区