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).

Zgłoś błąd na stronie

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!