rclone定时备份文件到网盘

442 字
2 分钟
rclone定时备份文件到网盘

前言#

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

安装rclone#

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

以mega网盘为例

脚本#

#!/bin/bash
# ==============================
# 可配置项
# ==============================
# 要备份的目录(不要加 /)
source_dir="/备份目录"
# 本地备份目录
backup_dir="/本地备份目录"
mkdir -p "$backup_dir"
# rclone 远程路径(例如 gdrive:/backup)
remote="路径:/文件路径"
# 允许通过环境变量设置自定义前缀,默认值为 "backup"
filename_prefix="${FILENAME_PREFIX:-backup}"
# ==============================
# 自动变量
# ==============================
now=$(date +"%Y-%m-%d_%H-%M-%S")
backup_file="$backup_dir/${filename_prefix}_${now}.zip"
parent_dir=$(dirname "$source_dir")
target_dir=$(basename "$source_dir")
echo "======================================"
echo "📦 开始备份任务"
echo "源目录: $source_dir"
echo "备份文件: $backup_file"
echo "======================================"
# ==============================
# 开始压缩(静默)
# ==============================
cd "$parent_dir" || { echo "❌ 无法进入目录 $parent_dir"; exit 1; }
echo "📦 正在压缩..."
zip -r "$backup_file" "$target_dir" > /dev/null
if [ $? -ne 0 ]; then
echo "❌ 压缩失败"
exit 1
fi
echo "✅ 压缩完成"
du -h "$backup_file"
# ==============================
# 上传到远程(显示进度)
# ==============================
echo "======================================"
echo "📤 开始上传到远程:$remote"
echo "======================================"
rclone copy "$backup_file" "$remote" \
--progress \
--stats 5s \
--stats-one-line \
--transfers=1 \
--checkers=1
if [ $? -ne 0 ]; then
echo "❌ 上传失败"
exit 1
fi
echo "✅ 上传完成"
# ==============================
# 清理本地旧备份
# ==============================
echo "🗑️ 清理本地旧备份(保留最近 3 个)..."
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 个)..."
rclone lsf "$remote" --files-only | \
grep "^${filename_prefix}_" | \
sort -r | \
awk 'NR>3' | \
while read file; do
echo "删除远程:$file"
rclone deletefile "$remote/$file"
done
echo "======================================"
echo "🎉 所有操作完成"
echo "======================================"

设置定时任务#

Terminal window
crontab -e

每天0点和中午12点执行

Terminal window
0 0,12 * * * /脚本路径

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
rclone定时备份文件到网盘
https://blog.leuxx.de/posts/5/
作者
Leu
发布于
2025-05-12
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Leu
慢慢折腾,认真记录,每一天都有新的收获
公告
欢迎来到我的博客,随便看看不用客气!
分类
标签
站点统计
文章
35
分类
10
标签
12
总字数
19,835
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录