Site icon Gioxx.org

Firefox 57 e SessionStoreBackup, cosa c’è da sapere

Anche se in realtà le prime modifiche sono saltate fuori già con Firefox 56, la prossima versione del browser di casa Mozilla cambierà molte carte in tavola, salteranno tante regole fino a oggi scritte, e ci sarà sicuramente un’emorragia (con conseguente migrazione verso altri lidi) di utenti che non sopporteranno le novità pronte a scendere in campo (qui abbiamo cercato di raccontartele nella miglior maniera possibile). Non sto prendendo le parti di niente e nessuno. Io mi limito a continuare a utilizzare il browser che da sempre reputo il più bilanciato, anche se ogni giorno li apro -per lavoro- praticamente tutti.

Avevo già promesso che avrei rimesso mano al SessionStoreBackup, e così ho fatto ormai lo scorso agosto, quando la versione 57 di Firefox era stata distribuita tramite canale Nightly, senza però pubblicare alcunché nel blog (mea culpa!).

Ormai prossima all’uscita (14 novembre, nda), questa varia ancora una volta il modo di memorizzare le tab aperte durante la tua navigazione, e per questo motivo occorre rivedere il passaggio con cui il mio batch va a salvare ciò che ti serve, così da evitare sorprese ben poco gradite in caso di crash o altro evento imprevisto di sistema (ultimamente stiamo cercando di supportare diversi casi sul forum di Mozilla Italia).

Cosa cambia (jsonlz4)

Rispetto al passato, con le nuove release del browser avrai a che fare con dei file json compressi, i nuovi jsonlz4. La struttura resta la medesima:

Ti mostro quello che vedo (su un profilo che ha subito i vari cambiamenti del tempo e delle release di Firefox, ignora quindi i file “js” semplici):

Non esiste più un sessionstore.js libero nella cartella del profilo, non almeno nella normalità, di certo non è più il file di riferimento per il ripristino delle tue tab. Dovremo lavorare proprio sulla cartella originale dei backup di Firefox, affinché questo possa recuperare la sessione che ti interessa.

Lo script

Al solito, caricato nei miei Gist, disponibile qui di seguito (fai clic con il tasto destro su “view raw” in basso a destra, quindi salva la destinazione con nome, dovresti poter vedere un SessionStoreBackup.cmd lì dove hai deciso di scaricarlo):

REM =====================================================================================================================
REM NOME DEL PROFILO (DA CONFIGURARE)
REM Se non sai cosa fare, leggi https://wp.me/pdQ5q-8PN
REM =====================================================================================================================
set NOMEPROFILO=TUOPROFILO.default
REM =====================================================================================================================
REM NON TOCCARE NIENTE DA QUI IN POI!
REM =====================================================================================================================
@echo off
setlocal enabledelayedexpansion
cls
echo SessionStoreBackup 0.7 per Firefox 57+
echo ult.mod. 22/8/17, GSolone (gf.solone@mozillaitalia.org)
echo info: http://wp.me/pdQ5q-1BY
echo ---------------------------------------------------------------------------------
:Preparazione
echo;
echo Lettura directory e file di salvataggio sessione ...
echo;
set sessionFileDir=%appdata%\Mozilla\Firefox\Profiles\%NOMEPROFILO%\sessionstore-backups\
set sessionBackupDir=%appdata%\Mozilla\Firefox\Profiles\%NOMEPROFILO%\
set sessionRecoveryFileName=recovery
set sessionPreviousFileName=previous
set sessionFileSuffix=.jsonlz4
if not exist "%sessionFileDir%%sessionRecoveryFileName%%sessionFileSuffix%" (echo File di recovery sessione non trovato, termino il programma. && GOTO :End)
if not exist "%sessionBackupDir%SessionStoreBackup" mkdir %sessionBackupDir%SessionStoreBackup
:MD5
REM File Recovery sorgente
set /a count=1
for /f "skip=1 delims=:" %%a in ('CertUtil -hashfile "%sessionFileDir%%sessionRecoveryFileName%%sessionFileSuffix%" MD5') do (
if !count! equ 1 set "md5RecoverySource=%%a"
set/a count+=1
)
set "md5RecoverySource=%md5RecoverySource: =%
echo Hash Source Recovery %md5RecoverySource%
REM File Previous sorgente
set /a count=1
for /f "skip=1 delims=:" %%a in ('CertUtil -hashfile "%sessionFileDir%%sessionPreviousFileName%%sessionFileSuffix%" MD5') do (
if !count! equ 1 set "md5PreviousSource=%%a"
set/a count+=1
)
set "md5PreviousSource=%md5PreviousSource: =%
echo Hash Source Previous %md5PreviousSource%
REM File Recovery destinazione
set /a count=1
for /f "skip=1 delims=:" %%a in ('CertUtil -hashfile "%sessionBackupDir%SessionStoreBackup\%sessionRecoveryFileName%%sessionFileSuffix%" MD5') do (
if !count! equ 1 set "md5RecoveryDest=%%a"
set/a count+=1
)
set "md5RecoveryDest=%md5RecoveryDest: =%
echo Hash Destination Recovery %md5RecoveryDest%
REM File Previous destinazione
set /a count=1
for /f "skip=1 delims=:" %%a in ('CertUtil -hashfile "%sessionBackupDir%SessionStoreBackup\%sessionPreviousFileName%%sessionFileSuffix%" MD5') do (
if !count! equ 1 set "md5PreviousDest=%%a"
set/a count+=1
)
set "md5PreviousDest=%md5PreviousDest: =%
echo Hash Destination Previous %md5PreviousDest%
echo;
if %md5RecoverySource% == %md5RecoveryDest% (echo File di sessione recovery esistente, backup non necessario, avanzo.)
if %md5PreviousSource% == %md5PreviousDest% (echo File di sessione previous esistente, backup non necessario, termino il programma. && GOTO :End)
:Start
IF NOT EXIST "%sessionBackupDir%%sessionRecoveryFileName%%sessionFileSuffix%" (
echo Creo i file di backup ...
echo;
copy "%sessionFileDir%%sessionRecoveryFileName%%sessionFileSuffix%" "%sessionBackupDir%%sessionRecoveryFileName%%sessionFileSuffix%"
copy "%sessionFileDir%%sessionPreviousFileName%%sessionFileSuffix%" "%sessionBackupDir%%sessionPreviousFileName%%sessionFileSuffix%"
echo;
echo Sposto i file nella cartella di backup ...
echo;
move "%sessionBackupDir%%sessionRecoveryFileName%%sessionFileSuffix%" "%sessionBackupDir%SessionStoreBackup\"
move "%sessionBackupDir%%sessionPreviousFileName%%sessionFileSuffix%" "%sessionBackupDir%SessionStoreBackup\"
echo;
echo Backup completato in
echo "%sessionBackupDir%SessionStoreBackup\%sessionRecoveryFileName%%sessionFileSuffix%"
echo "%sessionBackupDir%SessionStoreBackup\%sessionPreviousFileName%%sessionFileSuffix%"
echo;
)
:End
endlocal

Facci caso, rispetto alla sua precedente versione ho mantenuto molto di quanto già esistente (quasi tutto). Il controllo di versione del file è sempre lo stesso, così come il modo di dichiarare la cartella del tuo profilo, che però potrai ricercare in maniera più semplice.

Digita about:profiles nella barra URL del tuo Firefox e premi invio, verrai portato alla schermata che riepiloga tutti i profili presenti sulla macchina. Quello che stai utilizzando in questo momento è quello che non potrai cancellare, sarà quindi facile individuarlo :-)

Ancora una volta il consiglio rimane lo stesso: fai girare lo script automaticamente (o manualmente, se lo preferisci) ogni ora, se puoi anche meno. Più spesso verrà eseguito, più potrai recuperare facilmente la tua sessione in caso di problemi.

Recupero manuale della sessione

Apri la cartella del profilo che stai usando, quindi chiudi il browser, questo è il primo fondamentale passaggio.

Basandoti sul file che più si avvicina alla data e all’ora del problema che hai riscontrato, naviga la cartella del tuo profilo, quella principale, all’interno della quale dovresti trovare un file chiamato sessionstore.jsonlz4. Se presente, rinominalo in qualcosa di diverso, per esempio sessionstore.jsonlz4.bak, quindi copia uno dei due file precedentemente salvati (il previous.jsonlz4 o il recovery.jsonlz4) e rinominalo in sessionstore.jsonlz4.

Avvia ora Firefox. Se quel file che hai sostituito è consistente, vedrai ricomparire le tue tab così come le avevi lasciate l’ultima volta. Diversamente, non c’è altra possibilità di recupero (che io sappia), a meno di non utilizzare una scappatoia offerta dalle “Versioni precedenti” di Windows (il servizio del sistema operativo che permette il versioning dei file sotto costante salvataggio).

Occhio: puoi fare la stessa cosa anche con uno dei diversi “upgrade.jsonlz4-XXXXXXXXXXXXXX” (al posto delle X troverai anno, mese, giorno e ora del salvataggio) a disposizione, portandone fuori uno modificato alla data / ora che ti serve e rinominandolo in sessionstore.jsonlz4, ma così come per la coppia “recovery / previous“, continua a non esserci garanzia alcuna di funzionamento. Di certo questo è un ulteriore layer di protezione “fatto in casa” per evitare di perdere il proprio lavoro, soprattutto quando si ha a che fare con rilasci di Firefox fuori dal canale stabile, più portato ad andare in crash per qualche bug.

Credo di aver detto tutto. Al solito, in caso di problemi o ulteriori dubbi, l’area commenti è a tua completa disposizione (mi raccomando, problemi inerenti SessionStoreBackup, non altri problemi generici del browser, per quelli esiste già il nostro forum).

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version