#!/bin/bash

# 设置变量
BACKUP_DIR="/opt/.rsync_backup_history"
SOURCE_DIR="/opt/rsync_back"
DATE=$(date '+%F')
BACKUP_FILE="rsync_all_backup_${DATE}.tar.gz"
LOG_FILE="/var/log/obsidian_backup.log"

# 日志函数
log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}

# 检查源目录是否存在
if [ ! -d "$SOURCE_DIR" ]; then
    log_message "错误: 源目录 $SOURCE_DIR 不存在"
    exit 1
fi

# 创建备份目录
mkdir -p "$BACKUP_DIR"
if [ $? -ne 0 ]; then
    log_message "错误: 无法创建备份目录 $BACKUP_DIR"
    exit 1
fi

# 创建备份
log_message "开始备份 $SOURCE_DIR 到 $BACKUP_DIR/$BACKUP_FILE"
tar -zcf "$BACKUP_DIR/$BACKUP_FILE" -C "$(dirname "$SOURCE_DIR")" "$(basename "$SOURCE_DIR")"
# -C 的作用是切换到指定目录

# 检查备份是否成功
if [ $? -eq 0 ]; then
    log_message "备份成功: $BACKUP_FILE"
    
    # 删除7天前的备份文件（仅删除文件，不删除目录）
    find "$BACKUP_DIR" -name "obsidian_*.tar.gz" -type f -mtime +7 -delete
    
    if [ $? -eq 0 ]; then
        log_message "清理完成: 已删除7天前的备份文件"
    else
        log_message "警告: 清理旧备份文件时出现问题"
    fi
else
    log_message "错误: 备份失败"
    exit 1
fi

log_message "备份脚本执行完成"
