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:
- ci sarà un
previous.jsonlz4
contenente la sessione del precedente utilizzo - un
recovery.jsonlz4
che viene aggiornato a intervalli regolari durante l’utilizzo in corso - vari
upgrade.jsonlz4-XXXXXXXXXXXXXX
che corrisponderanno alla sessione in vita per ciascun aggiornamento.
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).
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! :-)