rclone增量备份脚本~有需要的可以进来看看~

V 胖虎_  (UID: 2112) [复制链接]
帖子链接已复制到剪贴板
帖子已经有人评论啦,不支持删除!

1183 0

rclone的备份脚本。增量备份数据库和网站。网站占用大了的话,用全量备份不方便。可以试试这个增量备份。

从三点左右搞到七点多。用ai写的(主要想屏蔽源目录/所有文件夹里面的.well-known文件夹,一直没搞好,最后在别人博客里受到启发,用/*/.well-known匹配。【之前一直用的*/.well-known/  或者*/.well-known/**   或者/.well-known/等等。被ai和网上教程误导~一直写的不对。】)

rclone下载【可以官网自己找其他的,下面这个针对Linux/macOS/BSD systems】

sudo -v ; curl https://rclone.org/install.sh | sudo bash

创建 remote 端

可以百度找各种对应远程存储 remote端创建方法。挺多类似的。我用的七牛。可以参考。

https://developer.qiniu.com/kodo/12285/docking-rclone

rclone增量脚本

在服务器创建test.sh文件,把下面脚本放进去。给文件添加执行权限。

chmod +x test.sh

用宝塔或者服务器的crontab 定时。如果更新不频繁,可以设置每天一次执行。(首次执行时间可能长点。毕竟是全量备份了)

如果只执行一次

./test.sh

如果用crontab的话,如下

每天的午夜(0 点)执行一次
0 0 * * * /test.sh

脚本如下

#!/bin/bash

# 配置部分(放在脚本开头)

# 网站备份的源目录路径
SOURCE_WEB_DIR="/www/wwwroot"
# 网站备份的目标目录路径(远程存储)rclone名:存储桶名
TARGET_WEB_DIR="backup:backup/wwwroot"
# 数据库备份的源目录路径
SOURCE_MYSQL_DIR="/www/backup/database/mysql/crontab_backup"
# 数据库备份的目标目录路径(远程存储)
TARGET_MYSQL_DIR="hk-kc-backup:hk-kc-backup/sql"
# 排除模式 需要用双引号引内容
#EXCLUDE_PATTERNS='--exclude "/*/.well-known/" --exclude "/*/cache/" --exclude ".user.ini"'
# 日志文件路径
LOG_FILE="/root/rclone/rclone_sync_log.txt"

# 检查日志文件是否存在,如果不存在则创建
if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
fi


# 函数:记录日志并输出到终端
log_and_echo() {
    local current_time=$(date "+%Y-%m-%d %H:%M:%S")
    echo "$current_time - $1" | tee -a $LOG_FILE
}
echo "========================开始================================" | tee -a $LOG_FILE
# 网站备份开始记录
log_and_echo "网站备份开始"

# 网站备份前检查
if [ ! -d "$SOURCE_WEB_DIR" ]; then
    log_and_echo "网站备份源目录不存在,请检查路径。"
    exit 1
fi
if [ ! -r "$SOURCE_WEB_DIR" ]; then
    log_and_echo "网站备份源目录不可读,请检查权限。"
    exit 1
fi

rclone lsd "$TARGET_WEB_DIR" > /dev/null 2>&1
if [ $? -ne 0 ]; then
    log_and_echo "网站备份目标存储不可访问或配置错误,请检查。"
    exit 1
fi

# 执行网站备份并输出日志
rclone sync "$SOURCE_WEB_DIR" "$TARGET_WEB_DIR" -v --exclude "/*/.well-known/" --exclude "/*/cache/" --exclude ".user.ini"  --delete-excluded >> "$LOG_FILE" 2>&1

# 网站备份结束记录
log_and_echo "网站备份结束"

# 数据库备份开始记录
log_and_echo "数据库备份开始"

# 数据库备份前检查
if [ ! -d "$SOURCE_MYSQL_DIR" ]; then
    log_and_echo "数据库备份源目录不存在,请检查路径。"
    exit 1
fi
if [ ! -r "$SOURCE_MYSQL_DIR" ]; then
    log_and_echo "数据库备份源目录不可读,请检查权限。"
    exit 1
fi

rclone lsd "$TARGET_MYSQL_DIR" > /dev/null 2>&1
if [ $? -ne 0 ]; then
    log_and_echo "数据库备份目标存储不可访问或配置错误,请检查。"
    exit 1
fi

# 执行数据库备份并捕获错误信息
rclone sync "$SOURCE_MYSQL_DIR" "$TARGET_MYSQL_DIR" -v --delete-excluded>> "$LOG_FILE" 2>&1

# 数据库备份结束记录
log_and_echo "数据库备份结束"
echo "========================结束================================" | tee -a $LOG_FILE
这家伙太懒了,什么也没留下。
已有评论 ( 0 )
提示:您必须 登录 才能查看此内容。
域名市场
   域名载入中...
创建新帖
自助推广 (点击空位或 这里 添加)
确认删除
确定要删除这篇帖子吗?删除后将无法恢复。
删除成功
帖子已成功删除,页面将自动刷新。
删除失败
删除帖子时发生错误,请稍后再试。