Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
smart_backup.sh8.92 kB
#!/bin/bash # MemOS智能备份脚本 # 专为个人电脑设计,支持开机自动备份、使用时提醒备份等策略 set -e MEMOS_DIR="/home/qqinshu/视频/MemOS" BACKUP_SCRIPT="$MEMOS_DIR/backup_simple.sh" BACKUP_STATE_FILE="$MEMOS_DIR/memos_data/.backup_state" LAST_BACKUP_FILE="$MEMOS_DIR/memos_data/.last_backup" # 颜色定义 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}" } # 获取上次备份时间 get_last_backup_time() { if [ -f "$LAST_BACKUP_FILE" ]; then cat "$LAST_BACKUP_FILE" else echo "0" fi } # 更新上次备份时间 update_last_backup_time() { echo "$(date +%s)" > "$LAST_BACKUP_FILE" } # 检查是否需要备份 need_backup() { local last_backup=$(get_last_backup_time) local current_time=$(date +%s) local hours_since_backup=$(( (current_time - last_backup) / 3600 )) # 如果超过24小时没有备份,则需要备份 if [ "$hours_since_backup" -gt 24 ]; then return 0 # 需要备份 else return 1 # 不需要备份 fi } # 静默备份(后台执行) silent_backup() { log_info "执行静默备份..." if "$BACKUP_SCRIPT" > /dev/null 2>&1; then update_last_backup_time log_success "静默备份完成" return 0 else log_error "静默备份失败" return 1 fi } # 交互式备份提醒 interactive_backup_reminder() { local last_backup=$(get_last_backup_time) local current_time=$(date +%s) local hours_since_backup=$(( (current_time - last_backup) / 3600 )) echo "🔔 MemOS备份提醒" echo "================" if [ "$last_backup" = "0" ]; then echo "📋 状态: 尚未进行过备份" else echo "📋 上次备份: $(date -d @$last_backup '+%Y-%m-%d %H:%M:%S') (${hours_since_backup}小时前)" fi if need_backup; then echo "⚠️ 建议立即执行备份!" echo "" echo "选择操作:" echo " 1) 立即备份" echo " 2) 稍后提醒 (1小时后)" echo " 3) 跳过此次提醒" echo "" read -p "请选择 (1-3): " choice case "$choice" in 1) log_info "开始执行备份..." if "$BACKUP_SCRIPT"; then update_last_backup_time log_success "备份完成!" else log_error "备份失败,请检查系统状态" fi ;; 2) # 设置1小时后提醒 echo "$(date -d '+1 hour' +%s)" > "$BACKUP_STATE_FILE" log_info "已设置1小时后提醒" ;; 3) log_info "已跳过此次备份提醒" ;; *) log_warning "无效选择,跳过备份" ;; esac else echo "✅ 备份状态正常,无需立即备份" fi } # 开机自动检查 boot_check() { log_info "开机备份检查..." if need_backup; then log_warning "检测到需要备份,将在后台执行..." # 等待系统稳定(开机后30秒) sleep 30 if silent_backup; then # 发送桌面通知(如果支持) if command -v notify-send > /dev/null 2>&1; then notify-send "MemOS备份" "开机自动备份已完成" --icon=dialog-information fi else # 备份失败时发送通知 if command -v notify-send > /dev/null 2>&1; then notify-send "MemOS备份" "开机自动备份失败,请手动检查" --icon=dialog-error fi fi else log_info "备份状态正常,无需执行开机备份" fi } # 关机前备份检查 shutdown_check() { log_info "关机前备份检查..." if need_backup; then log_warning "检测到需要备份!" echo "" echo "系统即将关机,建议先执行备份。" echo "" read -p "是否现在备份?(Y/n): " choice if [[ "$choice" =~ ^[Yy]$ ]] || [[ -z "$choice" ]]; then log_info "执行关机前备份..." if "$BACKUP_SCRIPT"; then update_last_backup_time log_success "备份完成,可以安全关机" else log_error "备份失败!" read -p "是否仍要继续关机?(y/N): " force_choice if [[ ! "$force_choice" =~ ^[Yy]$ ]]; then log_info "已取消关机" exit 1 fi fi else log_warning "已跳过备份,直接关机" fi else log_info "备份状态正常,可以安全关机" fi } # 设置开机自启动 setup_autostart() { log_info "设置开机自动备份检查..." # 创建systemd用户服务 local service_dir="$HOME/.config/systemd/user" mkdir -p "$service_dir" cat > "$service_dir/memos-backup-check.service" << EOF [Unit] Description=MemOS开机备份检查 After=graphical-session.target [Service] Type=oneshot ExecStart=$MEMOS_DIR/smart_backup.sh boot Environment=DISPLAY=:0 [Install] WantedBy=default.target EOF # 启用服务 systemctl --user daemon-reload systemctl --user enable memos-backup-check.service log_success "开机自动备份检查已设置" } # 移除开机自启动 remove_autostart() { log_info "移除开机自动备份检查..." systemctl --user disable memos-backup-check.service 2>/dev/null || true rm -f "$HOME/.config/systemd/user/memos-backup-check.service" systemctl --user daemon-reload log_success "开机自动备份检查已移除" } # 显示帮助信息 show_help() { echo "MemOS智能备份脚本 - 个人电脑优化版" echo "" echo "用法: $0 [命令]" echo "" echo "命令:" echo " check 检查备份状态并提供交互式选项" echo " boot 开机自动检查(静默模式)" echo " shutdown 关机前检查" echo " force 强制执行备份" echo " status 显示备份状态" echo " setup-auto 设置开机自动检查" echo " remove-auto 移除开机自动检查" echo " help 显示此帮助信息" echo "" echo "个人电脑使用建议:" echo " 1. 运行 '$0 setup-auto' 设置开机自动检查" echo " 2. 定期运行 '$0 check' 进行交互式备份" echo " 3. 关机前运行 '$0 shutdown' 确保数据安全" } # 显示备份状态 show_status() { local last_backup=$(get_last_backup_time) local current_time=$(date +%s) echo "📊 MemOS备份状态" echo "================" if [ "$last_backup" = "0" ]; then echo "📋 备份状态: 尚未备份" echo "⚠️ 建议: 立即执行首次备份" else local hours_since_backup=$(( (current_time - last_backup) / 3600 )) echo "📋 上次备份: $(date -d @$last_backup '+%Y-%m-%d %H:%M:%S')" echo "⏰ 距今时间: ${hours_since_backup}小时" if need_backup; then echo "⚠️ 状态: 需要备份" else echo "✅ 状态: 正常" fi fi # 显示最近的备份文件 echo "" echo "📁 最近的备份文件:" if ls "$MEMOS_DIR/memos_data/backups/"memos_backup_*.tar.gz 1> /dev/null 2>&1; then ls -lht "$MEMOS_DIR/memos_data/backups/"memos_backup_*.tar.gz | head -3 else echo " 未找到备份文件" fi } # 主函数 main() { case "${1:-check}" in check) interactive_backup_reminder ;; boot) boot_check ;; shutdown) shutdown_check ;; force) log_info "强制执行备份..." if "$BACKUP_SCRIPT"; then update_last_backup_time log_success "强制备份完成" else log_error "强制备份失败" exit 1 fi ;; status) show_status ;; setup-auto) setup_autostart ;; remove-auto) remove_autostart ;; help|--help|-h) show_help ;; *) log_error "未知命令: $1" show_help exit 1 ;; esac } # 运行主函数 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