42 lines
1.0 KiB
Bash
42 lines
1.0 KiB
Bash
|
# Copyright(c) 2024 ely. All rights reserved.
|
|||
|
#
|
|||
|
# Name: format.sh v1.0
|
|||
|
#
|
|||
|
# Program:
|
|||
|
# Shell Script format
|
|||
|
#
|
|||
|
# History:
|
|||
|
# 2024/07/24 e0x1a new commit
|
|||
|
#
|
|||
|
# AUTHOR:
|
|||
|
# e0x1a "e0x1a@aliyun.com"
|
|||
|
#!/bin/bash
|
|||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
|||
|
export PATH
|
|||
|
|
|||
|
SOURCE_DIR="$(dirname "$(realpath "$0")")"
|
|||
|
BACKUP_DIR="/mnt/backup/app"
|
|||
|
RETENTION=30 # 保留的备份数量
|
|||
|
|
|||
|
# 创建备份目录(如果不存在)
|
|||
|
mkdir -p "$BACKUP_DIR"
|
|||
|
|
|||
|
# 遍历源目录下的所有子目录
|
|||
|
for dir in "$SOURCE_DIR"/*/; do
|
|||
|
dir_name=$(basename "${dir%/}")
|
|||
|
# 跳过非目录文件(如 backup.sh)
|
|||
|
if [ -d "$dir" ]; then
|
|||
|
# 生成带日期的备份文件名
|
|||
|
backup_file="$BACKUP_DIR/${dir_name}_$(date +%Y%m%d).tar.gz"
|
|||
|
# 压缩并备份目录
|
|||
|
tar -czf "$backup_file" -C "$SOURCE_DIR" "$dir_name"
|
|||
|
|
|||
|
# 清理旧备份
|
|||
|
find "$BACKUP_DIR" -name "${dir_name}_*.tar.gz" -type f \
|
|||
|
| sort -r \
|
|||
|
| tail -n +$(($RETENTION + 1)) \
|
|||
|
| xargs rm -f 2>/dev/null
|
|||
|
fi
|
|||
|
done
|
|||
|
|