42 lines
1.0 KiB
Bash
Executable File
42 lines
1.0 KiB
Bash
Executable File
# 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
|
||
|