Rsnapshot mit externer Festplatte

Rsnapshot scheint für Backups auf Servern gedacht zu sein. Jedenfalls bekommt man ein paar Probleme, wenn der Rechner nicht immer läuft oder gar die Festplatte nicht immer eingeschaltet ist, während es versucht, seine Arbeit zu verrichten. Wenn man z.B. mehrere Cronjobs eingerichtet hat, die täglich, wöchentlich und monatlich Snapshots machen, den Rechner aber beim monatlichen Backup einmal nicht an hat, fällt das monatliche Backup komplett aus.
Dieses Problem lässt sich mit anacron lösen. Anacron führt Jobs eine gewisse Zeit nach dem Systemstart aus.

Allerdings gibt es noch ein weiteres Problem, wenn man seine Backups auf einer externen Festplatte speichern möchte: ist die Festplatte ausgeschaltet, startet Anacron den Job und sieht ihn als ausgeführt an, Rsnapshot macht allerdings nichts (weil man in der config no_create_root aktiviert hat). Das führt im schlimmsten Fall wieder dazu, dass das monatliche Backup ausfällt.

Um das zu verhindern hatte ich ursprünglich für jeden Backup-Job noch einen Warn-Job erstellt, der mir 5min vor dem Backup eine Warnung einblendet, dass ich die Festplatte einschalten sollte. Allerdings passiert es durchaus öfter mal, dass ich genau während dieser 5min nicht auf den Bildschirm gucke. Deshalb habe ich das Problem jetzt richtig™ gelöst und ein kleines Script geschrieben, welches die jeweiligen Snapshots ausführt, wenn der letzte erfolgreiche(!) Snapshot schon mehr als einen Tag, eine Woche oder einen Monat zurück liegt.

Das Skript ist hier auf Github zu finden: https://github.com/Scumpeter/rscron/blob/master/rscron.sh

Wenn das Script als /opt/rscron.sh gespeichert wird (und natürlich executable ist), kann man folgendes in /etc/anacron.conf eintragen:

1    45    rsnapshot.daily    /opt/rscron.sh

Das führt dazu, dass das Skript 45min nach dem Start des Systems (und spätestens täglich) ausgeführt wird.

Es wird vorausgesetzt, dass rsnapshot,  sudo und notify-send installiert und eingerichtet sind. Und dass man einen libnotify-kompatiblen Notification-Daemon auf seinem Desktop laufen hat (KDE, Gnome und XFCE haben so etwas eingebaut).

Firefox unter KDE und verwaiste Configs

Ich bin neulich von Chromium auf Firefox (zurück) umgestiegen. Jetzt habe ich festgestellt, dass Firefox immer Thunar als Dateimanager öffnet, obwohl an allen erdenklichen Stellen im System der KDE-Standard-Filemanager Dolphin eingestellt ist.

Thunar ist der Standard-Filemanager von XFCE, den ich nicht deinstallieren möchte, weil er den besten File-Renamer beinhaltet, den man sich wünschen kann.

Ich habe lange rumgeforscht und eine ganze Menge Lösungsansätze gefunden:

  • /home/BENUTZERNAME/.mozilla/firefox/PROFILNAME/mimeTypes.rdf löschen oder verschieben
  • Standard-Filemanager von KDE umstellen
  • Firefox mit „export DE=kde && firefox“ starten
  • Komische Voodoo-Dinge in .desktop-Dateien in /usr/share/applications/ eintragen
  • inode/directory=IRGENDWAS“ auf „inode/directory=kde4-dolphin.desktop;“ ändern in
    • ~/.local/share/applications/defaults.list
    • ~/.local/share/applications/mimeapps.list
    • ~/.local/share/applications/mimeinfo.cache
    • /usr/share/applications/defaults.list
    • /usr/share/applications/mimeapps.list
    • /usr/share/applications/mimeinfo.cache
  • Voodoo mit den gconf-editor
  • Standard-Filemanager in den Gnome- oder XFCE-Einstellungen bzw. bei den Ordnereigenschaften von Nautilus ändern.

Das alles sind Dinge, von denen Leute in diversen Foren und Bugtrackern behauptet haben, dass sie genau dieses Problem für sie gelöst hätte. Bis auf den letzten Punkt habe ich auch alles (erfolglos) ausprobiert.

Dieser letzte Punkt hat mich allerdings auf eine recht abwegige Idee gebracht: Ich hatte ja irgendwann einmal XFCE auf diesem Rechner installiert. Die Config-Files davon waren auch noch in meinem Home-Verzeichnis. Da ich die nicht mehr brauchte, habe ich einfach mal probiert, sie zu löschen:

rm -r ~/.config/xfce4

Und voilà, Firefox benimmt sich wieder.

Zum Abschluss ein kurzer Rant.

Nicht nur, dass ich 6(!) Stellen gefunden habe an denen Firefox (zumindest Gerüchten zu Folge) guckt, welche Anwendungen er benutzen soll, er hält sich auch noch lieber an die Einstellungen von einem DE, das gar nicht mehr installiert ist, als an die von dem welches gerade läuft?! Dazu kommt, dass offenbar niemand so recht weiß, wo Firefox überall sucht und welche Quellen dabei was für eine Priorität haben.

Dabei wäre doch alles so einfach, wenn die Leute Konventionen befolgen würden. xdg-open hat Dolphin geöffnet, aber Firefox benutzt lieber gnome-open (warum gibt es das überhaupt?!) und das benutzt dann die verwaisten Einstellungen von XFCE… ich habe gar nicht so viele Hände, wie ich mir vor den Kopf schlagen möchte.

Übersetzungsskript

Ich habe gestern ein großartiges Übersetzungsskript gebastelt. Auf einen Tastatur-Shortcut gelegt, übersetzt es mir gerade markierte Worte, wenn ich den Shortcut drücke. Hier die Version von Englisch nach Deutsch:

#!/bin/bash
zenity --info --no-markup --text="$(dict -d eng-deu $(xsel))"

Voraussetzungen für das Skript sind (in Ubuntu) die Pakete zentiy, dict und xsel. Man kann sie natürlich durch andere ersetzen. Dazu muss man dann halt den Befehl entsprechend anpassen.

Ich würde mich sehr über Verbesserungsvorschläge oder Ideen für weitere Einsatzgebiete in den Kommentaren freuen.

edit: Ich habe grade noch eine weniger aufdringliche Version gebastelt. Diese basiert statt auf zenity auf libnotify-bin und einem laufenden Notify-System (welches in allen größeren Desktopumgebungen eingebaut ist):

#!/bin/bash
notify-send "$(xsel)" "$(dict -f -d eng-deu $(xsel) | grep '  ')"

The princess is a lie

Videos gibt es schon seit einiger Zeit. Jetzt wurde es entlich veröffentlicht: Mari0

Das Spiel ist eine Kombination aus dem Jump’n’Run Klassiker Super Mario Bros. (1985) von Nintendo und dem Puzzle-Shooter Portal (2007) von Valve. Es werden zwei Levelsets mitgeliefert. Einerseits die klassichen Super Mario Level und andrerseits etwas puzzeligere Level im Portal-Stil. Zusätzlich kann man auch selbst Level gestalten.

Leider habe ich noch nicht herausgefunden, wie man die Steuerung einstellt, damit man sich sowohl schnell bewegen, als auch mit der Portal Gun gut zielen kann.

Auf jeden Fall ist es eine grandiose Idee. Das ganze ist Open Source und kann kostenlos von der offiziellen Webseite runtergeladen werden. Allerdings braucht man für die Linux Variante eine development Version (mindestens 0.8.0) von Löve.

Selfsigned Zertifikate in Chromium

Möchte man in Chromium selbst signierte Zertifikate akzeptieren, muss man sich zunächst einmal das Zertifikat besorgen. Dazu geht man auf die entsprechende Webseite, klickt auf das Schloss-Symbol neben dem roten, durchgestrichenen https und da auf Zertifikatinformationen. In dem Fenster kann man das Zertifikat dann im Reiter Details in eine Datei exportieren.

Da Chromium von sich aus keine Möglichkeit mitbringt, das Zertifikat nun auch zu akzeptieren muss man da von Hand ran. Unter Linux geht das absurderweise mit einem Tool von Firefox.

Das heißt certutil und gibt es bei Ubuntu im Paket libnss3-tools. Also erst mit:

aptitude install libnss3-tools

das Paket installieren und dann das Zertifikat, dass man nach DATEINAME exportiert hat mit

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n ZERTIFIKATSNAME -i DATEINAME

zur Datenbank hinzufügen. Jetzt sollte das Zertifikat akzeptiert werden und die lästige Warnung verschwinden.

Gefunden habe ich den Befehl auf http://code.google.com/p/chromium/wiki/LinuxCertManagement

sudo & Pipes

Wenn man einen Befehl mit sudo durch eine Pipe leiten möchte, wie z.B.:

sudo echo "xscreensaver-command -lock" > usr/lib/kde4/libexec/kscreenlocker

besteht das Problem, dass nur der Teil vor dem > mit root-Rechten ausgeführt wird und nicht der ganze Befehl.
Nach kurzem Googlen habe ich auf dieser Seite folgende Lösung gefunden:
Statt sudo BEFEHL  gibt man sudo bash -c 'BEFEHL' ein. Das führt dazu, dass sudo eine Bash mit root-Rechten ausführt, die dann den eigentlichen Befehl ausführt.
Also für mein Beispiel:

sudo bash -c 'echo "xscreensaver-command -lock" > /usr/lib/kde4/libexec/kscreenlocker'

(Dieser Befehl sorgt übrigens dafür, dass man in KDE seinen Bildschirm mit xscreensaver statt mit kscreensaver sperren kann.)

Probleme mit Evolution und Dovecot

Ich habe grade festgestellt, dass Evolution auf meinem Notebook seit dem Update auf Ubuntu 11.04 („The Natty Narwhal„) Probleme mit dem Auffrischen der IMAP-Ordner auf meinem Mail-Server hat. Um das Problem zu lösen brauchte ich erst einmal ein paar Informationen. Während mir die Fehlermeldung von Evolution nur verraten konnte, dass es eben nicht geht, war der Log des Servers schon hilfreicher:

Panic: file mail-index-transaction.c: line 637 (mail_index_transaction_lookup): assertion failed: (seq >= t->first_new_seq && seq <= t->last_new_seq)


Diese Fehlermeldung konnte ich im Web suchen und bin so zu der Mailingliste von Dovecot und darüber zu dem entsprechenden Bugreport gekommen.

Der Bug wurde also in Dovecot offenbar in Version 1.2.14 behoben. Für meinen Server gibt es allerdings leider kein so aktuelles Paket. Und bis ich Zeit habe, ein Distributions-Update zu machen, möchte ich trotzdem Mails mit Evolution abholen können. Also muss ich mir den Fehler etwas genauer angucken und sehen, ob ich einen Workaround finde. Schließlich lief mit Maverick noch alles bestens.

Das Problem ist laut Bugreport ein neues Feature in Evolution, das in Dovecot scheinbar Fehlerhaft implementiert ist: QRESYNC. Dieses Feature soll also dafür sorgen, dass die Ordner schneller zwischen Client und Server synchronisiert werden können. Dann gucken wir doch einfach mal, ob wir eine Option finden, das abzuschalten…

Et voilá: In den „Empfangsoptionen“ der IMAP-Konten-Einstellungen von Evolution findet sich eine Option:

„Schnelles Abgleichen“ verwenden, falls der Server es unterstüzt

Seitdem ich diese Option deaktiviert habe funktioniert wieder alles bestens.

Android Notifier

Android Notifier ist eine App für Android, die es ermöglicht, über verschiedene Ereignisse (z.B. Anrufe oder SMS) an seinem PC (oder Mac) informiert zu werden. Das ist besonders praktisch, wenn man sein Telefon in einem Raum am Ladekabel hängen hat (was bei meinem Akku-Wunder eigentlich ständig der Fall ist) und in einem anderen Raum am Rechner sitzt.

Zunächst braucht man die App auf seinem Telefon:

Android Notifier im Market

Und dann die dazugehörige Desktop-Anwendung auf seinem Linux– oder Windows-PC bzw. auf seinem Mac.

Diese startet man dann (sowohl die App auf dem Telefon, als auch die Anwendung auf dem Desktop) und geht zunächst in die Settings. Dort ist eigentlich das meiste selbsterklärend. Was man nicht versteht braucht man wahrscheinlich auch nicht ändern.

Man kann auch auswählen, worüber man sich benachrichtigen lassen möchte. Zur Auswahl stehen: Klingeln, SMS, MMS, Batteriestatus, Voicemail, Ping und „Third-party“.

Third-party Apps müssen allerdings schon explizit Android Notifier unterstützen. Bislang sind mir keine bekannt, die das auch machen.

Nachrichten verschlüsseln

Ich würde jedoch empfehlen, die Notifications zu verschlüsseln. Weil sie sonst jeder im Netzwerk mitlesen kann (und zwar in jedem Wlan, in dem man mit seinem Telefon ist). Es ist auch nicht allzu schwer, die Verschlüsselung zu aktivieren.

Im Telefon geht man dazu in den Einstellungen auf „Security“ und macht einen Haken bei „Encrypt notifications“ und tippt danach auf „Passphrase“. Darauf poppt ein Fenster auf, in das man den Schlüssel eintragen kann. Das kann eine beliebige Zeichenkette sein. Man sollte sie sich allerdings merken, weil man sie gleich noch am Computer eintragen muss.

Am Rechner macht man quasi das gleiche: In den Einstellungen einen Haken bei „Decrypt notifications“ machen und bei „Passphrase“ den Schlüssel von eben eintragen.

In den Einstellungen am Telefon kann man jetzt noch „Send test notification“ wählen um das Ganze zu testen.

Opensubtitles.org & Subdownloader

Wir alle gucken gerne Serien & Filme auf Englisch. Allerdings ist es manchmal ziemlich schwer, schnellen Redeflüssen mit furchtbaren Akzenten zu folgen, oder unbekannte Wörter nach Gehör nachzuschlagen. Deshalb wurden Untertitel erfunden.
Allerdings kommen viele Serien und Filme ohne Untertitel daher. Woher bekommt man also welche?

Die Lösung lautet: Opensubtitles.org
Auf der Webseite kann man Untertitel in verschiedenen Sprachen suchen & herunterladen, oder auch selbst erstellte Untertitel hochladen.

Jetzt ist es etwas mühselig, für jedes Video den passenden Untertitel zu finden. Schließlich muss nicht nur der richtige Film gefunden werden, sondern der Untertitel muss auch synchron zum Video sein.
Diese Arbeit nimmt einem eine ganze Liste von Programmen ab.

Ich persönlich benutze dafür Subdownloader. Für Windowsuser ist das Programm zwar eigentlich kostenpflichtig, allerdings ist der Quellcode frei verfügbar und ein paar freundliche Leute haben daraus eine freie Version für Windows gebastelt.

Also viel Spaß beim entspannten Gucken.

Videodateien zusammenführen

Oft hat man mehrere Videodateien, die eigentlich zusammengehören oder auch verschiedene Spuren eines Videos (z.B. seperate Untertiteldateien), die man gerne zusammenführen möchte.

Dazu gibt es verschiedene Tools. Je nachdem, welches Containerformat man gerne hätte, kann man zwischen avimergemkvmerge aus MKVToolnix oder MP4Box aus dem Projekt GPAC wählen.


avimerge
kann nur Videodateien aneinanderhängen oder Audiodateien als neue Tonspur zu einem bestehenden Video hinzufügen.

Der Befehl

avimerge -o big.avi -i my_file1.avi my_file2.avi

vereint die beiden Dateien my_file1.avi und my_file2.avi zu einer großen big.avi.

mkvmerge ist da schon mächtiger. Das liegt zu einem großen Teil sicher auch daran, dass der moderne Matroska (MKV) Container wesentlich mehr kann, als der alte AVI Container. Man kann Videos zusammenführen, Tonspuren hinzufügen, Untertitel hinzufügen, beliebige Attribute ändern und sogar mehrere Videospuren in eine Datei packen.

Dank der schönen GUI namens mmg ist das auch für Anfänger ziemlich einfach.

MP4Box hat einen ähnlichen Umfang wie mkvmerge. Es erzeugt nur MP4 statt Matroska. Allerdings hat es leider keine GUI.

Der Befehl

MP4Box -cat video1.avi -cat video2.avi -new big.mp4

führt video1.avi und video2.avi zu einer großen Datei big.mp4 zusammen.

Und zum Schluß noch ein Tip für Menschen, die unbedingt mpeg1 oder mpeg2 Containern brauchen: mpeg-Dateien kann man mit mencoder zusammenführen:

mencoder -ovc copy -oac copy -of mpeg Datei1.mpeg Datei2.mpeg -o Datei1und2.mpeg