Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
backup_simple.sh7.53 kB
#!/bin/bash # MemOS简易备份脚本 # 基于现有备份机制的扩展,实现定时tar压缩和可选云存储上传 set -e # 配置变量 MEMOS_DIR="/home/qqinshu/视频/MemOS" BACKUP_BASE_DIR="$MEMOS_DIR/memos_data/backups" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") BACKUP_NAME="memos_backup_$TIMESTAMP" BACKUP_DIR="$BACKUP_BASE_DIR/$BACKUP_NAME" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 日志函数 log_info() { echo -e "${BLUE}ℹ️ $1${NC}" } log_success() { echo -e "${GREEN}✅ $1${NC}" } log_warning() { echo -e "${YELLOW}⚠️ $1${NC}" } log_error() { echo -e "${RED}❌ $1${NC}" } # 检查环境 check_environment() { log_info "检查备份环境..." # 检查MemOS目录 if [ ! -d "$MEMOS_DIR" ]; then log_error "MemOS目录不存在: $MEMOS_DIR" exit 1 fi # 检查虚拟环境 if [ ! -d "$MEMOS_DIR/memos_venv" ]; then log_error "虚拟环境不存在: $MEMOS_DIR/memos_venv" exit 1 fi # 创建备份目录 mkdir -p "$BACKUP_BASE_DIR" log_success "环境检查通过" } # 执行记忆备份 backup_memories() { log_info "执行记忆数据备份..." cd "$MEMOS_DIR" # 使用MVP管理器的dump_memories方法 $MEMOS_DIR/memos_venv/bin/python -c " from mvp_memory import create_mvp_memory_manager import sys try: mvp = create_mvp_memory_manager() success = mvp.dump_memories('$BACKUP_DIR') if success: print('✅ 记忆数据备份成功') sys.exit(0) else: print('❌ 记忆数据备份失败') sys.exit(1) except Exception as e: print(f'❌ 备份过程出错: {e}') sys.exit(1) " if [ $? -eq 0 ]; then log_success "记忆数据备份完成" else log_error "记忆数据备份失败" exit 1 fi } # 备份配置文件 backup_configs() { log_info "备份配置文件..." # 备份关键配置文件 CONFIG_BACKUP_DIR="$BACKUP_DIR/configs" mkdir -p "$CONFIG_BACKUP_DIR" # 备份配置文件 if [ -f "$MEMOS_DIR/memos_data/concurrent_config.json" ]; then cp "$MEMOS_DIR/memos_data/concurrent_config.json" "$CONFIG_BACKUP_DIR/" fi if [ -f "$MEMOS_DIR/memos_data/official_config.json" ]; then cp "$MEMOS_DIR/memos_data/official_config.json" "$CONFIG_BACKUP_DIR/" fi if [ -f "$MEMOS_DIR/pyproject.toml" ]; then cp "$MEMOS_DIR/pyproject.toml" "$CONFIG_BACKUP_DIR/" fi if [ -f "$MEMOS_DIR/requirements.txt" ]; then cp "$MEMOS_DIR/requirements.txt" "$CONFIG_BACKUP_DIR/" fi log_success "配置文件备份完成" } # 备份重要数据目录 backup_data_dirs() { log_info "备份重要数据目录..." DATA_BACKUP_DIR="$BACKUP_DIR/data" mkdir -p "$DATA_BACKUP_DIR" # 备份daily_reviews if [ -d "$MEMOS_DIR/memos_data/daily_reviews" ]; then cp -r "$MEMOS_DIR/memos_data/daily_reviews" "$DATA_BACKUP_DIR/" fi # 备份memory_archives if [ -d "$MEMOS_DIR/memory_archives" ]; then cp -r "$MEMOS_DIR/memory_archives" "$DATA_BACKUP_DIR/" fi # 备份性能指标 if [ -f "$MEMOS_DIR/memos_data/performance_metrics.json" ]; then cp "$MEMOS_DIR/memos_data/performance_metrics.json" "$DATA_BACKUP_DIR/" fi log_success "数据目录备份完成" } # 创建tar压缩包 create_tar_archive() { log_info "创建tar压缩包..." cd "$BACKUP_BASE_DIR" TAR_FILE="$BACKUP_NAME.tar.gz" # 创建压缩包 tar -czf "$TAR_FILE" "$BACKUP_NAME" if [ $? -eq 0 ]; then # 获取文件大小 FILE_SIZE=$(du -h "$TAR_FILE" | cut -f1) log_success "压缩包创建成功: $TAR_FILE (大小: $FILE_SIZE)" # 删除临时目录 rm -rf "$BACKUP_NAME" # 输出压缩包路径供后续使用 echo "BACKUP_TAR_PATH=$BACKUP_BASE_DIR/$TAR_FILE" else log_error "压缩包创建失败" exit 1 fi } # 清理旧备份 cleanup_old_backups() { log_info "清理旧备份文件..." cd "$BACKUP_BASE_DIR" # 保留最近7个备份文件 BACKUP_COUNT=$(ls -1 memos_backup_*.tar.gz 2>/dev/null | wc -l) if [ "$BACKUP_COUNT" -gt 7 ]; then REMOVE_COUNT=$((BACKUP_COUNT - 7)) ls -1t memos_backup_*.tar.gz | tail -n "$REMOVE_COUNT" | xargs rm -f log_success "清理了 $REMOVE_COUNT 个旧备份文件" else log_info "备份文件数量未超过限制,无需清理" fi } # 验证备份完整性 verify_backup() { log_info "验证备份完整性..." TAR_FILE="$BACKUP_BASE_DIR/$BACKUP_NAME.tar.gz" # 验证tar文件完整性 if tar -tzf "$TAR_FILE" > /dev/null 2>&1; then log_success "备份文件完整性验证通过" else log_error "备份文件完整性验证失败" exit 1 fi } # 可选:上传到云存储 upload_to_cloud() { log_info "检查云存储配置..." # 读取配置文件 CONFIG_FILE="$MEMOS_DIR/backup_config.json" if [ -f "$CONFIG_FILE" ]; then # 检查是否启用云存储 CLOUD_ENABLED=$(python3 -c "import json; config=json.load(open('$CONFIG_FILE')); print(config.get('cloud_storage', {}).get('enabled', False))" 2>/dev/null || echo "False") if [ "$CLOUD_ENABLED" = "True" ]; then log_info "云存储已启用,但功能待实现" log_warning "请手动上传备份文件到云存储" else log_info "云存储未启用" fi log_info "备份文件位置: $BACKUP_BASE_DIR/$BACKUP_NAME.tar.gz" else log_info "未找到备份配置文件,跳过云存储步骤" fi } # 主函数 main() { echo "🚀 MemOS简易备份脚本" echo "====================" check_environment backup_memories backup_configs backup_data_dirs create_tar_archive verify_backup cleanup_old_backups upload_to_cloud echo "" log_success "备份任务完成!" echo "📁 备份文件: $BACKUP_BASE_DIR/$BACKUP_NAME.tar.gz" echo "💡 建议定期验证备份文件的可恢复性" } # 信号处理 trap 'log_error "备份过程被中断"; exit 130' INT TERM # 创建默认配置文件(如果不存在) create_default_config() { local config_file="$MEMOS_DIR/backup_config.json" if [ ! -f "$config_file" ]; then cat > "$config_file" << 'EOF' { "backup_settings": { "enabled": true, "retention": { "local_backups": 7 }, "personal_pc_mode": { "description": "个人电脑优化模式", "smart_backup": true, "desktop_shortcuts": true, "boot_check": true, "shutdown_reminder": true } }, "cloud_storage": { "enabled": false, "provider": "none", "note": "个人场景可选择手动上传到网盘" }, "verification": { "enabled": true }, "usage_tips": { "personal_pc": [ "使用 ./smart_backup.sh setup-auto 设置开机自动检查", "使用桌面快捷方式进行日常备份操作", "关机前运行 ./smart_backup.sh shutdown 确保数据安全", "定期运行 ./restore_verify.sh -a 验证备份完整性" ] } } EOF log_info "已创建默认配置文件: $config_file" fi } # 运行主函数 create_default_config main "$@"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/qinshu1109/memos-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server