restore_backup.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 快速恢复PostgreSQL备份脚本
  5. """
  6. import sys
  7. from pathlib import Path
  8. # 添加当前目录到路径
  9. sys.path.insert(0, str(Path(__file__).parent))
  10. from postgresql import restore_from_backup
  11. def main():
  12. # 备份路径
  13. backup_path = r"D:\code\vue\greater_wms\backup\base_backup\20260103_144522"
  14. # 检查是否有命令行参数(非交互模式)
  15. auto_confirm = len(sys.argv) > 1 and sys.argv[1] == '--yes'
  16. print("=" * 60)
  17. print("PostgreSQL 数据库恢复工具")
  18. print("=" * 60)
  19. print(f"\n备份路径: {backup_path}")
  20. print("\n警告:此操作将覆盖现有数据库数据!")
  21. print("当前数据目录将被备份到新位置。")
  22. if not auto_confirm:
  23. try:
  24. confirm = input("\n确认要继续恢复吗?(yes/no): ").strip().lower()
  25. if confirm != 'yes':
  26. print("操作已取消")
  27. return
  28. except EOFError:
  29. print("\n非交互模式,使用 --yes 参数自动确认")
  30. print("操作已取消")
  31. return
  32. print("\n开始恢复...")
  33. print("-" * 60)
  34. success = restore_from_backup(backup_path)
  35. print("-" * 60)
  36. if success:
  37. print("\n[成功] 数据库恢复成功!")
  38. print("PostgreSQL 服务已启动,可以开始使用数据库了。")
  39. else:
  40. print("\n[失败] 数据库恢复失败!")
  41. print("请查看日志文件 postgres_service_manager.log 获取详细信息。")
  42. sys.exit(1)
  43. if __name__ == "__main__":
  44. main()