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
#!/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 "$@"