一、docker部署aliyunpan-sync

aliyunpan-sync用于自动上传备份文件到阿里云盘。

1. 创建同步目录

该目录用于同步,以后向该目录放入文件,aliyunpan-sync检测到后即会自动上传至云盘指定目录。

2. 容器启动参数

docker run -d --name=aliyunpan-sync --restart=always -v "<your local dir>:/home/app/data" -e TZ="Asia/Shanghai" -e ALIYUNPAN_REFRESH_TOKEN="<your refreshToken>" -e ALIYUNPAN_PAN_DIR="<your drive pan dir>" -e ALIYUNPAN_SYNC_MODE="upload" -e ALIYUNPAN_LOCAL_DELAY_TIME=60 tickstep/aliyunpan-sync:v0.2.7

<your local dir>:本地目录绝对路径,例如:/tickstep/Documents/设计文档
ALIYUNPAN_PAN_DIR:云盘目录
ALIYUNPAN_REFRESH_TOKEN:RefreshToken
ALIYUNPAN_SYNC_MODE:备份模式,支持三种: upload(备份本地文件到云盘),download(备份云盘文件到本地),sync(双向同步备份)
ALIYUNPAN_LOCAL_DELAY_TIME: 本地文件修改检测延迟间隔,单位秒。如果本地文件会被频繁修改,例如录制视频文件,配置好该时间可以避免上传未录制好的文件

3. refreshToken获取方法

file

二、配置同步sh脚本

1. 创建一个用于备份数据库的数据库账户

该账户应该拥有SELECT, PROCESS, LOCK TABLES3个权限

2. 运行环境

脚本运行的环境应该要保证已安装以下软件包

mysql mysqldump gzip tar zip

如果没有的话自行安装

3. 配置脚本

#!/bin/bash

# 配置备份信息
MYSQL_USER="sqluser_name" # 数据库账户
MYSQL_PASSWORD="sqluser_password" # 数据库账户的密码
MYSQL_DATABASES=("db1" "db2") # 要备份的数据库名
BTPANEL_VHOST="/www/server/panel/vhost" # 宝塔面板站点配置文件路径
BTPANEL_WWWROOT="/www/wwwroot" # 宝塔面板站点文件目录
OTHER_FOLDERS=("/root/other1" "/root/other2") # 其他要备份的目录,如果不需要,直接写 () 留空
OUTPUT_PREFIX="服务器1备份" # 最终压缩包名前缀
ZIP_PASSWORD="zip_password" # 最终压缩包密码
SYNC_FOLDER="/root/backup/aliyun_sync_dir/" # 同步目录

echo "开始备份..."

echo ""
echo -n "创建临时目录..."
TEMP_DIR=$(mktemp -d)
echo $TEMP_DIR

echo ""
echo "备份数据库..."
for DB in "${MYSQL_DATABASES[@]}"; do
    echo -n "导出数据库 $DB..."
    filename=${DB}.sql
    mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $DB > "$TEMP_DIR/$filename"
    echo "完成 - $filename"
done

echo ""
echo -n "备份宝塔面板站点配置..."
filename=btpanel_vhost.tar.gz
tar -czf ${TEMP_DIR}/$filename -P "$BTPANEL_VHOST"
echo "完成 - $filename"

echo ""
echo -n "备份宝塔面板站点文件目录..."
filename=btpanel_wwwroot.tar.gz
tar -czf ${TEMP_DIR}/$filename -P "$BTPANEL_WWWROOT"
echo "完成 - $filename"

if [ ${#OTHER_FOLDERS[@]} -ne 0 ]; then
    echo ""
    echo "备份其他目录..."
    filename=other_folders.tar
    tar -cf ${TEMP_DIR}/$filename --files-from /dev/null
    for folder in "${OTHER_FOLDERS[@]}"; do
        echo -n "${folder}..."
        tar -f "${TEMP_DIR}/$filename" -P --append "$folder"
        echo "完成"
    done
    gzip "${TEMP_DIR}/$filename"
    echo "完成 - ${filename}.gz"
fi

echo ""
echo "全部打包加密..."
oriworkpath=$PWD
cd "$TEMP_DIR"
filename=${oriworkpath}/${OUTPUT_PREFIX}_$(date +%Y%m%d-%H%M%S).zip
zip -P $ZIP_PASSWORD -r "$filename" *
cd "$oriworkpath"
echo "完成 - $filename"

echo ""
echo -n "清除临时文件..."
rm -rf "$TEMP_DIR"
echo "完成"

echo ""
echo -n "移动备份文件到同步目录 ${SYNC_FOLDER}..."
mv "$filename" "${SYNC_FOLDER}/"
echo "完成"

保存并给予sh脚本执行权限

chmod +x /root/my-backup/backup.sh

4. 宝塔面板添加计划任务自动备份

最后更新于 2024-03-18