O ile przeglądarka Firefox od jakiegoś czasu – po zmianach w zarządzaniu plikami sesyjnymi – całkiem dobrze radzi sobie z obsługą sesji (otwartych okien i kart), o tyle Thunderbird w tym temacie totalnie kuleje. Czy to nieplanowany restart komputera (np. brak zasilania), czy… aktualizacja – nie ma większego znaczenia, zazwyczaj wszystkie otwarte karty (foldery, wiadomości) przepadają. W niedzielę, po kolejnej utracie wszystkich otwartych kart postanowiłem w końcu coś z tym zrobić…
Thunderbird Session BackUp Script
Oczywiście najpierw postanowiłem poszukać, czy nie ma jakichś wtyczek, które by usprawniły zarządzanie sesjami, tak jak to kiedyś stosowałem w przypadku Firefoxa. Nic z tego – a przynajmniej ja nie znalazłem nic sensownego. W takim razie postanowiłem pójść po najmniejszej linii oporu, i przygotować rozwiązanie, które będzie działało podobnie do tego, które jest zaimplementowane w przeglądarce Firefox – w zdefiniowanych odstępach czasu skrypt będzie wykonywał kolejną kopię pliku, tak by w razie potrzeby można było skorzystać z wcześniejszej jego wersji.
Z Thunderbirdem jest jak z demokracją – pełno wad i problemów, ale nic lepszego jak dotąd nie wymyślono…
Domyślnie Thunderbird m.in. informacje o otwartych kartach (i ich stanie) przechowuje w pliku:
C:\Użytkownicy\[nazwa profilu w Windowsie]\AppData\Roaming\Thunderbird\[nazwa-profilu]\session.json
U mnie ta ścieżka wygląda trochę inaczej, załóżmy, że:
D:\Poczta\Thunderbird\Profiles\Webinsider\session.json
I to jej będę używał w dalszych pracach – Wy musicie ją dopasować do własnych ustawień/potrzeb.
Postanowiłem na szybko napisać prosty skrypt (zwykły BAT/CMD), który będzie uruchamiany za pomocą systemowego harmonogramu zadań w zdefiniowanych odstępach czasu (u mnie co 15 minut):
@echo off
IF EXIST "D:\Poczta\Thunderbird\Profiles\Webinsider\session01.json" (
fc /LB1 D:\Poczta\Thunderbird\Profiles\Webinsider\session.json D:\Poczta\Thunderbird\Profiles\Webinsider\session01.json
echo "Sprawdzam czy identyczne: 0 - identyczne, koniec pracy; 1 - inne, zaczynam działać"
if ERRORLEVEL 1 GOTO INNE
if ERRORLEVEL 0 GOTO EXIT
) ELSE (
echo F | xcopy D:\Poczta\Thunderbird\Profiles\Webinsider\session.json D:\Poczta\Thunderbird\Profiles\Webinsider\session01.json
echo "Brak pliku pierwszej kopii - tworze go i kończę pracę"
GOTO EXIT
)
:INNE
echo "Plik źródłowy różni się od pliku pierwszej kopii, zaczynam działać"
del D:\Poczta\Thunderbird\Profiles\Webinsider\session05.json
echo F | xcopy D:\Poczta\Thunderbird\Profiles\Webinsider\session04.json D:\Poczta\Thunderbird\Profiles\Webinsider\session05.json
del D:\Poczta\Thunderbird\Profiles\Webinsider\session04.json
echo F | xcopy D:\Poczta\Thunderbird\Profiles\Webinsider\session03.json D:\Poczta\Thunderbird\Profiles\Webinsider\session04.json
del D:\Poczta\Thunderbird\Profiles\Webinsider\session03.json
echoa F | xcopy D:\Poczta\Thunderbird\Profiles\Webinsider\session02.json D:\Poczta\Thunderbird\Profiles\Webinsider\session03.json
del D:\Poczta\Thunderbird\Profiles\Webinsider\session02.json
echo F | xcopy D:\Poczta\Thunderbird\Profiles\Webinsider\session01.json D:\Poczta\Thunderbird\Profiles\Webinsider\session02.json
del D:\Poczta\Thunderbird\Profiles\Webinsider\session01.json
echo F | xcopy D:\Poczta\Thunderbird\Profiles\Webinsider\session.json D:\Poczta\Thunderbird\Profiles\Webinsider\session01.json
GOTO EXIT
:EXIT
echo "Koniec pracy"
exit
Najpierw skrypt sprawdza czy istniej pierwszy plik zapasowy – jeśli istnieje, to sprawdza czy zawartość jest identyczna jak pliku podstawowego, i jeśli tak, nie ma potrzeby wykonywania kopii zapasowej, więc skrypt kończy działanie. Jeśli jednak plik nie istnieje, lub jego zawartość jest inna niż w przypadku pliku bazowego – skrypt przechodzi do działania.
Tu już nie bawiłem się sprawdzanie czy kolejne kopie istnieją, po prostu skrypt leci kolejno, zastępując najstarsze pliki nowszymi wersjami. Wyjątkiem jest brak pliku pierwszej kopii – wtedy tworzony jest tylko ten jeden dodatkowy plik. Fragment „echo F |” służy by do polecenia xcopy przesłać informacje, że pracujemy z plikiem a nie katalogiem.
Jeśli zdecydujecie się na automatyczne uruchamianie skryptu przez systemowy harmonogram zadań, to warto rozważyć skorzystanie z takiej akcji/komendy, dzięki której skrypt uruchomi się w zminimalizowanym oknie:
%comspec% /c start "" /min "C:\Skrypty\TB-Session-BackUp.bat"
Oczywiście skrypt można by pewnie jeszcze rozwinąć, wprowadzić jakieś pętle, itp., ale raz, że pisałem go w niedzielę, gdy staram się odpoczywać od pracy, a dwa, że… działa, i w 100% spełnia swoje zadanie (u mnie wykonuje łącznie 20 kopii w odstępach co 15 minut).
- Home Assistant 2024.11, czyli „sekcje” domyślnym widokiem z opcją migracji, WebRTC oraz wirtualna kamera - 1970-01-01
- Black Friday w ZUS, czyli jest jeszcze kilka dni, by złożyć wniosek RWS i skorzystać z wakacji składkowych płacąc ZUS za grudzień 2024 - 1970-01-01
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
Ja mimo to w Firefoxie korzystam z „Sesion Menagera”, już nie raz mnie uratował odzyskując sesję, którą zgubił sam lisek.
Też kiedyś korzystałem, bo jak masz w standardzie otwarte kilka okien i sporo kart, to taki „nieplanowany restart” potrafi(ł) wk… Ale od jakiegoś czasu – nie pamiętam przy okazji której wersji, ale chyba dość dawno temu to było – w Frefoxie zmienili system zapisywania stanu sesji. Zrezygnowano z jednego pliku, tak jak ma to miejsce cały czas jeszcze w Thunderbirdzie (sic!), a wdrożyli bardziej rozbudowany mechanizm, wprowadzając dodatkowo katalog „sessionstore-backups”:
Oczywiście coś może uciec, ale jak na razie wszystko jest OK, i tym samym mogłem pozbyć się z przeglądarki kolejnej wtyczki (pliki dodatkowo archiwizuje).
Może, przy czym ja jestem klientem krytycznym, bo nie raz problemem jest mój sposób korzystania z FF, na prawdę nie raz potrafię mieć otwarte i 400 kart. Co nie raz powoduje, iż sam muszę ubić FF, bo przy 2,5Gb wykorzystywanego ramu zaczyna się mulenie (na 16Gb w kompie),
Do tego takie rozwiązanie, pozwala mi nie raz „zresetować” moją sesję i ją zapisać, a następnie zacząć z czystym kontem.
To widzę, że nasze korzystanie z FF jest dość podobne – w tej chwili FF zajmuje u mnie niecałe 2,5GB, ale niewiele mu brakuje, tak samo jak ilość RAMu w komputerze ;-)
A masz pomysł, co zrobić by FF pracował stabilnie również powyżej tej wartości – tz. by chciał pobierać więcej RAMu. Bo mam wrażenie, iż coś mu ogranicza maksymalna ilość ramu.
A używasz wersji x64? Właśnie testowo dobiłem ze „standardowych” ~2,5GB do prawie 4GB (sporo YouTube w kartach) i raczej lisek zachowywał się OK (w przeciwieństwie do dźwięku w słuchawkach ;-)).
A wydali w końcu wersję 64? Bo przestałem śledzić temat, na informacjach iż pracują nad taką wersją. A alternatywne kompilacje pod 64 bit mi nie podchodziły.
Tak, jest od jakiegoś już czasu stabilna i oficjalna wersja x64, a jeśli dobrze kojarzę, to od sierpnia jest to wersja domyślna dla Windowsa.
Faktycznie poprawiła się stabilność.
Nie do końca poprawiła się stabilność. Tz FF dalej łapie dziwne zawieszki, tylko teraz przy 7,6GB z 16 ramu.
No jak podwoiłeś wykorzystanie przez FF pamięci RAM (nawet ponad), to moim zdaniem jednak się stabilność poprawiła, choć jak widać – ma swoje granice. Sprawdź może Firefox Quantum, bo ponoć tu faktycznie widać poprawę – nie tylko na „marketingowych wykresach” (sam jeszcze nie testowałem, dopiero się przymierzam).