#!/bin/bash ############################################################################################# # 用途: 文件备份脚本 # 作者: 丁辉 # 更新时间: 2025-12-14 # 配置定时任务 # 每7天凌晨2点执行备份 0 2 * * * /usr/local/bin/file_backup.sh ############################################################################################# # 要备份的目录 SOURCE_DIR="" # 备份完成后保存目录 TARGET_DIR="" # 备份文件命名 TAR_NAME="" # true=开启清理,false=关闭清理 ENABLE_CLEAN="true" # 清理策略(默认7天外文件删除) RETENTION_DAYS=7 # 检查源目录是否存在 if [ ! -d "$SOURCE_DIR" ]; then echo "错误: 源目录 '$SOURCE_DIR' 不存在" exit 1 fi # 检查目标目录是否存在,如果不存在则创建 if [ ! -d "$TARGET_DIR" ]; then echo "目标目录 '$TARGET_DIR' 不存在,正在创建..." mkdir -p "$TARGET_DIR" if [ $? -ne 0 ]; then echo "错误: 无法创建目标目录" exit 1 fi fi # 生成日期(格式:YYYY-MM-DD) DATE=$(date +"%Y-%m-%d") # 生成备份文件名 BACKUP_FILENAME="${TAR_NAME}-${DATE}.tar" BACKUP_PATH="$TARGET_DIR/$BACKUP_FILENAME" echo "开始备份..." echo "源目录: $SOURCE_DIR" echo "目标文件: $BACKUP_PATH" # 执行备份(不压缩,只打包为tar) tar -cf "$BACKUP_PATH" -C "$(dirname "$SOURCE_DIR")" "$(basename "$SOURCE_DIR")" # 检查备份是否成功 if [ $? -eq 0 ]; then # 显示备份文件信息 BACKUP_SIZE=$(du -h "$BACKUP_PATH" | cut -f1) echo "备份完成!" echo "备份文件: $BACKUP_PATH" echo "文件大小: $BACKUP_SIZE" else echo "错误: 备份失败" exit 1 fi if [ "$ENABLE_CLEAN" = "true" ]; then # 删除7天前的备份文件 find "$TARGET_DIR" -name "${TAR_NAME}-*.tar" -type f -mtime +$RETENTION_DAYS -delete fi