Agregar respaldo y restauracion de Firefox y VSCodium nativo
Firefox: captura del perfil snap (marcadores, contrasenas, extensiones, cookies, contenedores, prefs; excluye caches y storage de sitios) y modulo de restauracion idempotente. VSCodium: pasa a instalacion nativa via repo apt oficial (clave GPG + sources) en lugar de flatpak; captura settings, snippets, perfiles, estado de workspaces y lista de extensiones (excluye cache de redhat.java). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Executable
+39
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
# Captura el perfil de Firefox (Snap): marcadores, historial, contraseñas,
|
||||
# extensiones, cookies, contenedores y preferencias de todos los perfiles.
|
||||
# Excluye cachés, almacenamiento de sitios, crash reports y telemetría.
|
||||
set -euo pipefail
|
||||
stpRoot="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
source "$stpRoot/lib/log.sh"
|
||||
|
||||
readonly firefoxCommonDirectory="$HOME/snap/firefox/common"
|
||||
readonly firefoxProfilesDirectory="$firefoxCommonDirectory/.mozilla/firefox"
|
||||
readonly outputFile="$stpRoot/secrets/firefoxProfile.zip"
|
||||
|
||||
firefoxDataExists() {
|
||||
[[ -f "$firefoxProfilesDirectory/profiles.ini" ]]
|
||||
}
|
||||
|
||||
if ! firefoxDataExists; then
|
||||
log::warn "Datos de Firefox Snap no encontrados en: $firefoxProfilesDirectory"
|
||||
log::info "Asegurate de haber abierto Firefox al menos una vez antes de capturar"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
log::step "Capturando perfil de Firefox"
|
||||
log::info "Cerrá Firefox antes de capturar para evitar bases de datos a medio escribir"
|
||||
mkdir -p "$stpRoot/secrets"
|
||||
rm -f "$outputFile"
|
||||
|
||||
(
|
||||
cd "$firefoxCommonDirectory"
|
||||
find ".mozilla/firefox" \
|
||||
| grep -Ev "/(cache2|startupCache|OfflineCache|thumbnails|shader-cache|jumpListCache|storage|minidumps|crashes|datareporting|saved-telemetry-pings|security_state|gmp-widevinecdm|gmp-gmpopenh264)(/|$)" \
|
||||
| grep -Ev "/(Crash Reports|Pending Pings)(/|$)" \
|
||||
| grep -Ev "\.(sqlite-wal|sqlite-shm)$" \
|
||||
| grep -Ev "/(lock|\.parentlock)$" \
|
||||
| zip -q "$outputFile" -@
|
||||
)
|
||||
|
||||
log::ok "Guardado: secrets/firefoxProfile.zip ($(du -sh "$outputFile" | cut -f1))"
|
||||
log::info "Commiteá secrets/firefoxProfile.zip antes de hacer push"
|
||||
Executable
+64
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
# Captura la configuración de VSCodium (instalación nativa, ~/.config/VSCodium):
|
||||
# settings, keybindings, snippets, perfiles, la lista de extensiones y el
|
||||
# estado de los workspaces (mapeo carpeta↔workspace + estado de UI).
|
||||
# Excluye la caché regenerable de las extensiones (p. ej. redhat.java/jdt_ws).
|
||||
set -euo pipefail
|
||||
stpRoot="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
source "$stpRoot/lib/log.sh"
|
||||
source "$stpRoot/lib/utils.sh"
|
||||
|
||||
readonly vscodiumConfigDirectory="$HOME/.config/VSCodium"
|
||||
readonly vscodiumUserDirectory="$vscodiumConfigDirectory/User"
|
||||
readonly outputFile="$stpRoot/secrets/vscodiumConfig.zip"
|
||||
|
||||
vscodiumDataExists() {
|
||||
[[ -d "$vscodiumUserDirectory" ]]
|
||||
}
|
||||
|
||||
listConfigFiles() {
|
||||
local configFile
|
||||
for configFile in settings.json keybindings.json tasks.json argv.json; do
|
||||
[[ -f "User/$configFile" ]] && echo "User/$configFile"
|
||||
done
|
||||
|
||||
find "User/snippets" "User/profiles" -type f 2>/dev/null
|
||||
|
||||
# De cada workspace solo interesa el mapeo a la carpeta y el estado de UI;
|
||||
# el resto son cachés de extensiones que se regeneran solas.
|
||||
find "User/workspaceStorage" -type f \
|
||||
\( -name workspace.json -o -name 'state.vscdb' -o -name 'state.vscdb.backup' \) 2>/dev/null
|
||||
|
||||
# Estado global: lista de workspaces recientes y asociaciones de perfil.
|
||||
find "User/globalStorage" -maxdepth 1 -type f \
|
||||
\( -name 'state.vscdb' -o -name 'storage.json' \) 2>/dev/null
|
||||
}
|
||||
|
||||
if ! vscodiumDataExists; then
|
||||
log::warn "Datos de VSCodium no encontrados en: $vscodiumUserDirectory"
|
||||
log::info "Asegurate de haber abierto VSCodium al menos una vez antes de capturar"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
log::step "Capturando configuración de VSCodium"
|
||||
mkdir -p "$stpRoot/secrets"
|
||||
rm -f "$outputFile"
|
||||
|
||||
(
|
||||
cd "$vscodiumConfigDirectory"
|
||||
listConfigFiles | zip -q "$outputFile" -@
|
||||
)
|
||||
|
||||
if util::cmdExists codium; then
|
||||
workingDirectory="$(mktemp -d)"
|
||||
trap 'rm -rf "$workingDirectory"' EXIT
|
||||
codium --list-extensions > "$workingDirectory/extensions.txt"
|
||||
# -j descarta la ruta: el archivo queda como extensions.txt en la raíz del zip.
|
||||
zip -qj "$outputFile" "$workingDirectory/extensions.txt"
|
||||
log::ok "Lista de extensiones incluida en el respaldo ($(wc -l < "$workingDirectory/extensions.txt") extensiones)"
|
||||
else
|
||||
log::warn "Comando 'codium' no disponible: no se guardó la lista de extensiones"
|
||||
fi
|
||||
|
||||
log::ok "Guardado: secrets/vscodiumConfig.zip ($(du -sh "$outputFile" | cut -f1))"
|
||||
log::info "Commiteá secrets/vscodiumConfig.zip antes de hacer push"
|
||||
Reference in New Issue
Block a user