Browse Source

refactor: Improve backup restoration logic in Cursor MAC ID modifier

- Enhanced restore feature with robust file discovery using `find`
- Added comprehensive error handling and validation for backup restoration
- Improved file selection process with sorted backup file list
- Implemented proper file permissions and ownership restoration
- Fixed potential edge cases in backup file selection and restoration
pull/231/head v0.0.88
煎饼果子卷鲨鱼辣椒 4 months ago
parent
commit
2bb74b41e0
  1. 58
      scripts/run/cursor_mac_id_modifier.sh

58
scripts/run/cursor_mac_id_modifier.sh

@ -538,50 +538,64 @@ modify_mac_address() {
# 新增恢复功能选项
restore_feature() {
local backup_files=("$BACKUP_DIR"/*.backup_*)
# 检查备份目录是否存在
if [ ! -d "$BACKUP_DIR" ]; then
log_warn "备份目录不存在"
return 1
}
# 使用find命令获取备份文件列表
mapfile -t backup_files < <(find "$BACKUP_DIR" -name "*.backup_*" -type f 2>/dev/null | sort)
# 检查是否存在备份文件
if [ ! -e "$BACKUP_DIR"/*.backup_* ]; then
# 检查是否找到备份文件
if [ ${#backup_files[@]} -eq 0 ]; then
log_warn "未找到任何备份文件"
return
fi
return 1
}
echo
log_info "可用的备份文件:"
echo "0) 退出 (默认)"
local i=1
for backup in "${backup_files[@]}"; do
echo "$i) $(basename "$backup")"
((i++))
# 显示备份文件列表
for i in "${!backup_files[@]}"; do
echo "$((i+1))) $(basename "${backup_files[$i]}")"
done
echo
echo -n "请选择要恢复的备份文件编号 [0-$((i-1))] (默认: 0): "
echo -n "请选择要恢复的备份文件编号 [0-${#backup_files[@]}] (默认: 0): "
read -r choice
# 如果用户直接按回车或输入0,则退出
# 处理用户输入
if [ -z "$choice" ] || [ "$choice" = "0" ]; then
log_info "跳过恢复操作"
return
return 0
fi
# 验证输入是否为有效数字
if ! [[ "$choice" =~ ^[0-9]+$ ]] || [ "$choice" -ge "$i" ]; then
# 验证输入
if ! [[ "$choice" =~ ^[0-9]+$ ]] || [ "$choice" -gt "${#backup_files[@]}" ]; then
log_error "无效的选择"
return
return 1
fi
# 获取选择的备份文件
local selected_backup="${backup_files[$((choice-1))]}"
if [ -f "$selected_backup" ]; then
if cp "$selected_backup" "$STORAGE_FILE"; then
log_info "已从备份文件恢复配置: $(basename "$selected_backup")"
else
log_error "恢复配置失败"
fi
# 验证文件存在性和可读性
if [ ! -f "$selected_backup" ] || [ ! -r "$selected_backup" ]; then
log_error "无法访问选择的备份文件"
return 1
}
# 尝试恢复配置
if cp "$selected_backup" "$STORAGE_FILE"; then
chmod 644 "$STORAGE_FILE"
chown "$CURRENT_USER" "$STORAGE_FILE"
log_info "已从备份文件恢复配置: $(basename "$selected_backup")"
return 0
else
log_error "选择的备份文件不存在"
log_error "恢复配置失败"
return 1
fi
}

Loading…
Cancel
Save