logo email Contactarme
terminal-backup

Terminal Backup

Definición del proyecto

Terminal Backup es un proyecto personal que consiste en una función de PowerShell para respaldar de forma sencilla y automatizada la configuración y los archivos de la Terminal de Windows. Su objetivo es evitar perder las preferencias personalizadas de la terminal cuando se reinstala el equipo, se cambia de máquina o se modifica accidentalmente el archivo settings.json.

Actividades realizadas

  1. Diseño y desarrollo de la función terminal-backup en PowerShell, encargada de copiar el archivo de configuración de la Terminal hacia una ruta de destino definida por el usuario.

  2. Definición de un sistema de organización por fecha y hora, donde cada respaldo se guarda dentro de una carpeta con el día actual y se nombra con la hora exacta de ejecución.

  3. Integración de la función dentro del perfil de PowerShell ($PROFILE), permitiendo que esté disponible de forma global en cualquier sesión de la terminal.

  4. Validación de directorios y archivos antes de realizar el respaldo para evitar errores cuando la carpeta destino aún no existe.

  5. Versionado del proyecto con Git y publicación en GitHub para que cualquier persona pueda instalar la función y adaptarla a sus necesidades.

Información adicional del proyecto

Pasos para agregar esta función a tu terminal:

1. Instalar PowerShell

Asegúrate de tener instalada la versión más reciente de PowerShell.

2. Abrir la configuración de tu perfil de PowerShell

Ejecuta el siguiente comando para abrir tu archivo de perfil en el Bloc de notas:

notepad $PROFILE

⚠️ Nota: Si recibes un error indicando que el archivo no existe, créalo con este comando:

New-Item -Path $PROFILE -Type File -Force

3. Agregar la función de copia de seguridad

Copia y pega la siguiente función en tu archivo de perfil abierto. No olvides modificar la variable $destination para definir la ruta donde quieres guardar las copias de seguridad.

function terminal-backup {
  # config file
  $file = "settings"
  $ext = ".json"

  # date
  $date = Get-Date -Format "dd-MM-yyyy"
  $h = Get-Date -Format "HH"
  $m = Get-Date -Format "mm"
  $s = Get-Date -Format "ss"

  # origin config path
  $origin = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\$file$ext"

  # destination path
  $destination = "insert your path for save backup || insertar la ruta donde guardar la copia de seguridad"

  # check file time exist
  if (-Not (Test-Path "$destination\$date")) {
    mkdir "$destination\$date"
  }

  # final destination
  $destination_for_save_backup = "$destination\$date\${h}hr-${m}min-${s}sec$ext"

  # copy file
  Copy-Item $origin $destination_for_save_backup -Force
}

4. Guardar y recargar el perfil

Después de guardar los cambios en el archivo $PROFILE, recarga tu perfil para que la función quede disponible sin necesidad de reiniciar la terminal:

. $PROFILE

5. Usar la función

Ahora, cada vez que quieras hacer una copia de seguridad de tu configuración, solo ejecuta:

terminal-backup

Esto creará una carpeta con la fecha actual y guardará una copia del archivo settings.json con la hora exacta.

Resultados obtenidos

La función quedó funcional y completamente integrada en mi propio flujo de trabajo, lo que me permite ejecutar un respaldo de la configuración de la Terminal con un solo comando y mantener un historial ordenado por fecha y hora. El proyecto también me ayudó a profundizar en PowerShell y a entender mejor cómo construir pequeñas utilidades que se integran de forma transparente con el sistema operativo.

Conclusión

Como proyecto personal, Terminal Backup nació de una necesidad propia: dejar de perder mi configuración personalizada de la Terminal cada vez que reinstalaba el sistema o cambiaba de máquina. Construir y mantener esta función me reafirmó el valor de automatizar tareas pequeñas pero frecuentes, especialmente cuando se trata de proteger configuraciones que han tomado tiempo en pulirse. Es un buen ejemplo de cómo un proyecto personal pequeño puede mejorar de forma directa la experiencia diaria de trabajo.

¿Ocupas algo similar a este proyecto?

Si tienes alguna pregunta o necesitas más información, no dudes en contactarme.

email Contactarme