1 自动备份流程
1.1 脚本配置与下载
您可以通过以下脚本自动化备份过程。请复制下面的脚本内容,并按需替换 WebDAV 配置。如果您不打算使用 WebDAV 上传功能,可以选择删除相关部分。
#!/bin/bash
# 定义源目录和备份目录变量
SOURCE_DIR="/home/palu/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/0"
MONTH_DIR=$(date +\%Y-\%m)
DATE_DIR=$(date +\%Y-\%m-\%d)
DATETIME_DIR="$(basename $DATE_DIR)-$(date +\%H\%M\%S)"
BACKUP_MONTH_DIR="/home/palu/backup/$MONTH_DIR"
BACKUP_DATE_DIR="$BACKUP_MONTH_DIR/$DATE_DIR"
BACKUP_DIR="$BACKUP_DATE_DIR/$DATETIME_DIR"
BACKUP_FILE_NAME="$DATETIME_DIR.tar.gz"
# 创建备份目录(如不存在)
mkdir -p "$BACKUP_DIR"
# 复制文件到备份目录
cp -a "$SOURCE_DIR/." "$BACKUP_DIR"
# 定义WebDAV服务器相关变量
WEBDAV_URL="<Webdav-url>"
WEBDAV_USER="<User>"
WEBDAV_PASSWORD="<Password>"
# 压缩备份文件
tar -czvf "$BACKUP_DATE_DIR/$BACKUP_FILE_NAME" -C "$BACKUP_DIR" .
# 在WebDAV中创建月份和日期目录
curl -X MKCOL -u "$WEBDAV_USER:$WEBDAV_PASSWORD" "$WEBDAV_URL/$MONTH_DIR/"
curl -X MKCOL -u "$WEBDAV_USER:$WEBDAV_PASSWORD" "$WEBDAV_URL/$MONTH_DIR/$DATE_DIR/"
# 将备份文件上传至WebDAV
curl -T "$BACKUP_DATE_DIR/$BACKUP_FILE_NAME" \
-u "$WEBDAV_USER:$WEBDAV_PASSWORD" \
"$WEBDAV_URL/$MONTH_DIR/$DATE_DIR/$BACKUP_FILE_NAME"
# 删除本地的原始备份目录
rm -rf "$BACKUP_DIR"
echo "备份已成功完成并上传至WebDAV: $(date)"
1.2 设置 Cron 定时任务
1.2.1 启动 Cron 任务编辑器:
crontab -e
1.2.2 添加定时备份任务:
将以下行添加至文件末尾,以实现每 30 分钟执行一次备份:
*/30 * * * * /home/palu/backup_script.sh
1.2.3 保存并退出编辑器。
2 定期清理本地备份文件
2.1 清理脚本
定期清理一周前的本地备份文件及其父文件夹,以优化存储空间。使用以下脚本实现:
#!/bin/bash
# 定义本地备份目录
LOCAL_BACKUP_DIR="/home/palu/backup"
# 查找本地一周之前的.tar.gz备份文件
OLD_FILES=$(find "$LOCAL_BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7)
for file in $OLD_FILES; do
# 删除文件
rm -f "$file"
echo "已删除文件:$file"
# 获取文件所在目录
DIR=$(dirname "$file")
# 如果文件夹为空,则删除文件夹
if [ -z "$(ls -A $DIR)" ]; then
rmdir "$DIR"
echo "已删除空文件夹:$DIR"
fi
done
echo "已成功删除一周之前的本地备份文件及其父文件夹: $(date)"
2.2 添加定时任务
在 Cron 中添加以下任务,以每周自动执行一次清理操作:
0 1 * * 0 /home/palu/delete_old_backups_weekly.sh
通过上述步骤,您可以确保自动备份的持续性和有效的本地存储管理。