一、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获取方法
二、配置同步sh脚本
1. 创建一个用于备份数据库的数据库账户
该账户应该拥有SELECT, PROCESS, LOCK TABLES
3个权限
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
Comments NOTHING