Pérdida de datos de la sesión de Claude Code: Script de respaldo para Windows y Mac

✍️ OpenClawRadar📅 Publicado: 7 de junio de 2026🔗 Source
Pérdida de datos de la sesión de Claude Code: Script de respaldo para Windows y Mac
Ad

Múltiples usuarios en r/ClaudeAI reportan que Claude Code pierde silenciosamente datos de sesión: el título de la sesión permanece en la barra lateral, pero al hacer clic aparece una transcripción vacía. Sin advertencia, error ni recuperación. Esto parece ocurrir durante la compresión de contexto, salidas inesperadas o problemas en la capa de almacenamiento.

Ad

La solución de respaldo

Un script creado por la comunidad respalda todos los datos de Claude Code (sessions, projects, plans, drafts, memory) desde ~/.claude a una carpeta separada, se ejecuta a diario mediante el Programador de tareas (Windows) o launchd (Mac) y conserva 7 días de copias rotativas.

Windows (PowerShell + Programador de tareas)

Cree la carpeta de respaldo:

mkdir C:\Users\%USERNAME%\ClaudeBackups

Guarde lo siguiente como backup-claude-sessions.ps1 en esa carpeta:

$ErrorActionPreference = "Stop"
$source = "$env:USERPROFILE\.claude"
$backupRoot = "$env:USERPROFILE\ClaudeBackups"
$logFile = Join-Path $backupRoot "backup.log"
$keepDays = 7
$timestamp = Get-Date -Format "yyyy-MM-dd_HHmmss"
$backupDir = Join-Path $backupRoot $timestamp
$dirs = @("sessions", "projects", "plans", "drafts", "memory")

function Write-Log($msg) { $line = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - $msg" Add-Content -Path $logFile -Value $line -Encoding utf8 }

try { Write-Log "=== Backup iniciado ===" New-Item -ItemType Directory -Path $backupDir -Force | Out-Null foreach ($d in $dirs) { $src = Join-Path $source $d if (Test-Path $src) { $dst = Join-Path $backupDir $d Copy-Item -Path $src -Destination $dst -Recurse -Force $count = (Get-ChildItem $dst -Recurse -File -ErrorAction SilentlyContinue | Measure-Object).Count Write-Log " Copiado $d ($count archivos)" } else { Write-Log " Omitido $d (no encontrado)" } } $size = (Get-ChildItem $backupDir -Recurse -File | Measure-Object -Property Length -Sum).Sum Write-Log " Tamaño total del respaldo: $([math]::Round($size/1MB, 2)) MB" $cutoff = (Get-Date).AddDays(-$keepDays) Get-ChildItem $backupRoot -Directory | Where-Object { $.Name -match '^\d{4}-\d{2}-\d{2}\d{6}$' -and $.CreationTime -lt $cutoff } | ForEach-Object { Remove-Item $.FullName -Recurse -Force -Confirm:$false Write-Log " Respaldo antiguo rotado: $($.Name)" } Write-Log "=== Respaldo completado exitosamente ===" } catch { Write-Log "!!! RESPALDO FALLIDO: $" exit 1 }

Cree install-schedule.ps1 y ejecútelo como Administrador una vez:

$action = New-ScheduledTaskAction     -Execute "powershell.exe"
    -Argument "-ExecutionPolicy Bypass -WindowStyle Hidden -File "$env:USERPROFILE\ClaudeBackups\backup-claude-sessions.ps1""
$trigger = New-ScheduledTaskTrigger -Daily -At 8:00AM
$settings = New-ScheduledTaskSettingsSet     -AllowStartIfOnBatteries
    -DontStopIfGoingOnBatteries     -StartWhenAvailable Register-ScheduledTask
    -TaskName "ClaudeSessionsBackup"     -Action $action
    -Trigger $trigger     -Settings $settings
    -Description "Respaldo diario de sesiones de Claude Code" `
    -RunLevel Limited
Write-Host "¡Listo! Se ejecuta diariamente a las 8:00 AM." -ForegroundColor Green

Ejecute el instalador:

powershell -ExecutionPolicy Bypass -File "C:\Users%USERNAME%\ClaudeBackups\install-schedule.ps1"

Mac (launchd + script de shell)

Cree la carpeta de respaldo:

mkdir -p /ClaudeBackups

Guarde como /ClaudeBackups/backup-claude-sessions.sh:

#!/bin/bash
set -euo pipefail
SOURCE="$HOME/.claude"
BACKUP_ROOT="$HOME/ClaudeBackups"
LOG_FILE="$BACKUP_ROOT/backup.log"
KEEP_DAYS=7
TIMESTAMP=$(date +"%Y-%m-%d_%H%M%S")
BACKUP_DIR="$BACKUP_ROOT/$TIMESTAMP"
DIRS=("sessions" "projects" "plans" "drafts" "memory")
log() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"; }
log "=== Backup iniciado ==="
mkdir -p "$BACKUP_DIR"
for d in "${DIRS[@]}"; do
    src="$SOURCE/$d"
    if [ -d "$src" ]; then
        cp -R "$src" "$BACKUP_DIR/$d"
        count=$(find "$BACKUP_DIR/$d" -type f | wc -l | tr -d ' ')
        log " Copiado $d ($count archivos)"
    else
        log " Omitido $d (no encontrado)"
    fi
done
size=$(du -sb "$BACKUP_DIR" | cut -f1)
log " Tamaño total del respaldo: $(echo "scale=2; $size/1048576" | bc) MB"
find "$BACKUP_ROOT" -maxdepth 1 -type d -name "????-??-??_??????" -mtime +$KEEP_DAYS -exec rm -rf {} + -exec log " Respaldo antiguo rotado: {}" ;
log "=== Respaldo completado exitosamente ==="

Hágalo ejecutable y programe mediante launchd (consulte la publicación original para la configuración del plist).

El script funciona de forma completamente independiente de Claude Code, por lo que incluso si Claude falla o pierde datos, los respaldos se conservan. Registra cada ejecución en backup.log para verificación.

📖 Lea la fuente completa: r/ClaudeAI

Ad

👀 Ver también