Cron i Gnome

Pod koniec dnia pracy mam potrzebę przesłać sobie katalog roboczy na serwer. Niby proste. Można użyć scp, można użyć rsync, tylko trzeba o tym pamiętać, a zdarza mi się zapomnieć.

Skoro taki jestem zapominalski, to zrobiłem sobie crony.

16 16 * * 1-5 /usr/bin/rsync -vaxAXHSz --delete /home/lukasz/wazny_katalog/ login@domena.pl:/home/lukasz/dane/wazny_katalog/ &> /home/lukasz/programy/rsync/rsync.log

19 16 * * 1-5 cd /home/lukasz/programy/rsync ; /usr/bin/python3 powiadomienie.py &>/dev/null

Cron z godziny 16:16 to jest jeszcze proste. Rsync kopiuje (lub nie, jak mu coś nie wyjdzie) zawartość katalogu. Komunikaty zapisuje w pliku rsync.log.

O godzinie 16:19 do akcji wchodzi skrypt Pythona, który uruchamia komunikaty pulpitu Gnome.

#!/usr/bin/env python3

from gi.repository import Notify
Notify.init('Rsync plików')

with open('rsync.log','r') as rsync_log:
  rsync_log_txt = rsync_log.read()
  if 'failed' not in rsync_log_txt:
    Notify.Notification.new('Przesyłanie plików OK').show()
  else:
    Notify.Notification.new('BŁĄD PRZESYŁANIA plików').show()

Rsync ma to do siebie, że nieudane przesyłanie plików opatruje komunikatem zawierającym słowo kluczowe „failed”, jaki ten błąd by nie był. Jeżeli przesyłanie plików pójdzie dobrze, a tak zazwyczaj jest, pojawi się komunikat „Przesyłanie plików OK”. Jeżeli tak się nie stanie i zobaczę „BŁĄD PRZESYŁANIA PLIKÓW”, muszę powtórzyć rsynca ręcznie w terminalu i tyle. Może i to taka pierdoła, ale od tego w końcu komputer jest, żeby o nich pamiętać.