This commit is contained in:
67
File/Shell/file-backup.sh
Normal file
67
File/Shell/file-backup.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user