84 lines
2.4 KiB
Bash
84 lines
2.4 KiB
Bash
#!/bin/bash
|
||
|
||
# 一键备份项目脚本
|
||
# 自动读取 .gitignore 规则并排除匹配的文件
|
||
# bash backups/一键备份.sh
|
||
|
||
set -e
|
||
|
||
# 颜色输出
|
||
GREEN='\033[0;32m'
|
||
BLUE='\033[0;34m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 脚本所在目录
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
||
# 项目根目录(脚本所在目录的父目录)
|
||
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||
|
||
# 项目backups目录
|
||
BACKUPS_DIR="${PROJECT_ROOT}/backups"
|
||
|
||
# 备份脚本路径(始终在项目的backups目录中)
|
||
BACKUP_SCRIPT="${BACKUPS_DIR}/快速备份.py"
|
||
|
||
# 检查备份脚本是否存在
|
||
if [ ! -f "${BACKUP_SCRIPT}" ]; then
|
||
echo -e "${YELLOW}⚠️ 错误: 备份脚本不存在${NC}"
|
||
echo ""
|
||
echo "备份工具应位于项目的 backups/ 目录中:"
|
||
echo " ${BACKUPS_DIR}/"
|
||
echo ""
|
||
echo "请确保:"
|
||
echo " 1. 复制快速备份.py到 ${BACKUPS_DIR}/"
|
||
echo " 2. 复制一键备份.sh到 ${BACKUPS_DIR}/"
|
||
echo ""
|
||
echo "或者使用方式:"
|
||
echo " • 在项目根目录执行: bash backups/一键备份.sh"
|
||
echo " • 或直接执行: python3 backups/快速备份.py"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${BLUE}========================================${NC}"
|
||
echo -e "${BLUE} 项目快速备份工具${NC}"
|
||
echo -e "${BLUE}========================================${NC}"
|
||
echo ""
|
||
echo -e "${GREEN}✓${NC} 找到备份脚本: backups/快速备份.py"
|
||
|
||
# 检查 Python3 是否可用
|
||
if ! command -v python3 &> /dev/null; then
|
||
echo -e "${YELLOW}⚠️ 错误: 未找到 python3 命令${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${GREEN}✓${NC} 项目目录: ${PROJECT_ROOT}"
|
||
echo -e "${GREEN}✓${NC} 备份脚本: ${BACKUP_SCRIPT}"
|
||
echo -e "${GREEN}✓${NC} Python 版本: $(python3 --version)"
|
||
echo ""
|
||
|
||
# 执行备份
|
||
echo -e "${YELLOW}▶ 正在执行备份...${NC}"
|
||
echo ""
|
||
|
||
# 切换到项目根目录
|
||
cd "${PROJECT_ROOT}"
|
||
|
||
# 运行备份脚本
|
||
python3 "${BACKUP_SCRIPT}"
|
||
|
||
# 检查执行结果
|
||
if [ $? -eq 0 ]; then
|
||
echo ""
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo -e "${GREEN} ✓ 备份完成!${NC}"
|
||
echo -e "${GREEN}========================================${NC}"
|
||
else
|
||
echo ""
|
||
echo -e "${YELLOW}========================================${NC}"
|
||
echo -e "${YELLOW} ✗ 备份失败${NC}"
|
||
echo -e "${YELLOW}========================================${NC}"
|
||
exit 1
|
||
fi
|