一键备份.sh 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/bin/bash
  2. # 一键备份项目脚本
  3. # 自动读取 .gitignore 规则并排除匹配的文件
  4. # bash backups/一键备份.sh
  5. set -e
  6. # 颜色输出
  7. GREEN='\033[0;32m'
  8. BLUE='\033[0;34m'
  9. YELLOW='\033[1;33m'
  10. NC='\033[0m' # No Color
  11. # 脚本所在目录
  12. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  13. # 项目根目录(脚本所在目录的父目录)
  14. PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
  15. # 项目backups目录
  16. BACKUPS_DIR="${PROJECT_ROOT}/backups"
  17. # 备份脚本路径(始终在项目的backups目录中)
  18. BACKUP_SCRIPT="${BACKUPS_DIR}/快速备份.py"
  19. # 检查备份脚本是否存在
  20. if [ ! -f "${BACKUP_SCRIPT}" ]; then
  21. echo -e "${YELLOW}⚠️ 错误: 备份脚本不存在${NC}"
  22. echo ""
  23. echo "备份工具应位于项目的 backups/ 目录中:"
  24. echo " ${BACKUPS_DIR}/"
  25. echo ""
  26. echo "请确保:"
  27. echo " 1. 复制快速备份.py到 ${BACKUPS_DIR}/"
  28. echo " 2. 复制一键备份.sh到 ${BACKUPS_DIR}/"
  29. echo ""
  30. echo "或者使用方式:"
  31. echo " • 在项目根目录执行: bash backups/一键备份.sh"
  32. echo " • 或直接执行: python3 backups/快速备份.py"
  33. exit 1
  34. fi
  35. echo -e "${BLUE}========================================${NC}"
  36. echo -e "${BLUE} 项目快速备份工具${NC}"
  37. echo -e "${BLUE}========================================${NC}"
  38. echo ""
  39. echo -e "${GREEN}✓${NC} 找到备份脚本: backups/快速备份.py"
  40. # 检查 Python3 是否可用
  41. if ! command -v python3 &> /dev/null; then
  42. echo -e "${YELLOW}⚠️ 错误: 未找到 python3 命令${NC}"
  43. exit 1
  44. fi
  45. echo -e "${GREEN}✓${NC} 项目目录: ${PROJECT_ROOT}"
  46. echo -e "${GREEN}✓${NC} 备份脚本: ${BACKUP_SCRIPT}"
  47. echo -e "${GREEN}✓${NC} Python 版本: $(python3 --version)"
  48. echo ""
  49. # 执行备份
  50. echo -e "${YELLOW}▶ 正在执行备份...${NC}"
  51. echo ""
  52. # 切换到项目根目录
  53. cd "${PROJECT_ROOT}"
  54. # 运行备份脚本
  55. python3 "${BACKUP_SCRIPT}"
  56. # 检查执行结果
  57. if [ $? -eq 0 ]; then
  58. echo ""
  59. echo -e "${GREEN}========================================${NC}"
  60. echo -e "${GREEN} ✓ 备份完成!${NC}"
  61. echo -e "${GREEN}========================================${NC}"
  62. else
  63. echo ""
  64. echo -e "${YELLOW}========================================${NC}"
  65. echo -e "${YELLOW} ✗ 备份失败${NC}"
  66. echo -e "${YELLOW}========================================${NC}"
  67. exit 1
  68. fi