Startseite Artikel Galerie Kontakt
JK ~ IT & Technik Blog

Artikel mit Schlagwort "Ubuntu"

vor »

USB-Stick automatisch synchronisieren (udev+rsync)

Im Zuge meiner Abschlussarbeit stellte ich einige Überlegungen zwecks der Verwaltung und Sicherung der entstehenden Datenflut an. Nach einigem Für und Wider habe ich mich für eine Variante entschieden, die ich hier kurz vorstellen möchte.
Ein USB-Stick dient zum Transport der Daten. Dies hat sich als besonders praktikabel erwiesen, da auf unterschiedlichen PCs gearbeitet werden muss und auch ein Internetzugang nicht immer garantiert ist.
Vor dem Verlust des USB-Sticks oder einem technischen Defekt ist keiner gefeit und darum muss eine möglichst einfache Backup-Lösung her.
Das geht unter Linux nativ mit Bordmitteln, die nur ein wenig kombiniert werden müssen:

Um das Sichern der Daten so bequem wie möglich zu machen, soll sich der USB-Stick nach dem Einstecken automatisch mit einem Verzeichnis auf der Festplatte synchronisieren. Ein Benutzereingriff soll nicht nötig sein.
Das kleine Tool udev (Homepage) ist dafür besonders gut geeignet, denn mit selbst erstellten Regeln kann man das Anschließen von Hardware erkennen (hotplug-Ereignisse) und selber Aktionen definieren.

Zuerst müssen ein paar Daten gesammelt werden, damit der USB-Stick von der udev-Regel eindeutig identifiziert werden kann. Mit dem folgenden Befehl sucht man sich das Device zum USB-Stick heraus:

mount


/dev/sdc1 on /media/JETFLASH600 …

Der USB-Stick ist dem System also unter /dev/sdc bekannt. Mit einem Tool von udev können nun Gerätedetails ausgelesen werden:

udevadm info --path=/sys/block/sdc --query=all --attribute-walk | grep serial


ATTRS{serial}==”RWTAG4K2
ATTRS{serial}==”0000:00:1d.7″

Das fett gedruckte ist die Seriennummer des USB-Sticks, die wir zur eindeutigen Identifizierung benutzen werden. Es können auch andere Merkmale zur Identifizierung genutzt werden und auch Kombinationen daraus (grep-Befehl weglassen). Nähere Informationen gibt es auf der man-Page.

Die udev-Regeln liegen bei Ubuntu im Verzeichnis /lib/udev/rules.d/ bzw. /etc/udev/rules.d/. Und im letzteren legt man eine eigene Regel an. Die Zahl im Dateinamen gibt an, zu welchem Zeitpunkt/in welcher Reihenfolge die Regeln greifen (näheres dazu in /lib/udev/rules.d/README).

sudo vim /etc/udev/rules.d/99-usb-backup-custom.rules

BUS==”usb”, ACTION==”add”, KERNEL==”sd?1″, SYSFS{serial}==”RWTAG4K2“, RUN+=”/pfad/zum/script/usb_backup.sh

(wichtig: kein Zeilenumbruch!)

BUS==”usb” USB-Ports sollen beobachtet werden
ACTION==”add” Nur beim Anschließen des Gerätes die Regel ausführen (sonst startet das Backup-Script immer wieder neu)
KERNEL==”sd?1″ Mit dem Fragezeichen als Platzhalter wird die erste Partition des Device berücksichtigt (sda1, sdb1, …)
SYSFS{serial}==”RWTAG4K2″ Es wird nach der Seriennummer gefiltert
RUN+=”/pfad/zum/script/usb_backup.sh” Hier wird die Aktion angegeben (hier: Pfad zum Backup-Script)

Nun kann das Backup-Script angelegt werden (unbedingt die gekennzeichneten Stellen anpassen!):

vim /pfad/zum/script/usb_backup.sh
#!/bin/bash
{
dev="JETFLASH600" #Device-Name angeben! (hier z.B. /media/JETFLASH600)
exec 3> >(sudo -H -u USERNAME zenity \	#Username einfügen!
			--display :0.0 \
			--text-info \
			--title "USB-Stick Datasaver" \
			--width=450 \
			--height=250)
echo "USB-Stick detected: $dev" >&3
mp=$(grep "$dev" /etc/mtab)
i=0
while [ -z "$mp" ] && [ "$i" -lt 30 ]
do
	sleep 1
	mp=$(grep "$dev" /etc/mtab)
	i=$((i+1))
done
if [ -n "$mp" ]
then
	rsync -avz --delete /media/$dev /pfad/zum/backup >&3 #Verzeichnis anpassen!
	echo "Done!" >&3
fi
} &

Sehr wichtig sind die geschweiften Klammern ({,}) und das Et-Zeichen (&). Dies bewirkt, dass das Script im Hintergrund arbeitet und dazu parallel die gewöhnliche Einbindung des USB-Sticks ablaufen kann. Mit zenity (Homepage) wird ein kleines Fenster geöffnet, was eine Übersicht über den Vorgang gibt. Die etwas umständlich wirkende Warteschleife (while…) ist nötig, um die Zeit zwischen der Erkennung des USB-Sticks (Script wird gestartet) und dem Einbinden zu überbrücken. Erst nach dem Einbinden ist ein Zugriff auf die Dateien möglich.
Das Tool rsync (Homepage) gleicht die Daten zwischen dem USB-Stick und dem Backup-Verzeichnis ab. In der man-Page wird erklärt, was die einzelnen Optionen bedeuten:

-a Dateien, Verzeichnisse, symbolische Links rekursiv abgleichen und dabei Rechte beibehalten
-v Ausgabe anzeigen
-z Datenabgleich komprimieren
–delete in der Quelle (USB-Stick) gelöschte Dateien auch im Ziel (Backup) löschen

Das Backup-Script braucht jetzt noch Berechtigungen zum Ausführen:

chmod 755 /pfad/zum/script/usb_backup.sh

Ausserdem muss das Verzeichnis für das Backup angelegt werden:

mkdir /pfad/zum/backup

Damit die udev-Regel benutzt werden kann, ist ein Neustart des udev-Daemons nötig:

sudo service udev reload

Fertig! Ab sofort werden die Daten des USB-Sticks beim Einstecken in das Backup-Verzeichnis geschrieben.

Screenshot:

Verfasst am: 18.05.2011 · Kategorien: Linux
Schlagworte: , , , , , , , , , , ,  · Kommentare: Keine Kommentare

Short-Circuit-Tests bei der Shellprogrammierung

Bei der Shellprogrammierung gibt es mit den sogenannten Short-Circuit-Tests eine sehr komfortable und knappe Methode, um mehrere Befehle logisch hintereinander zu reihen und zu verküpfen.
Die Syntax sieht dazu wie folgt aus:

COMMAND1 && COMMAND2
COMMAND1 || COMMAND2

Prinzipiell funktionieren die Anweisungen wie if-Abfragen:
&&: liefert der COMMAND1 true, wird COMMAND2 ausgeführt
||: liefert der COMMAND1 true, wird COMMAND2 nicht (!) ausgeführt

Als COMMAND1 werden oft Abfragebedingungen verwendet (müssen aber nicht), während COMMAND2 ein richtiger Befehl sein muss.

Die Arbeitsweise der beiden Operatoren sind als logisch UND bzw. ODER zu verstehen. Der Gedanke dahinter:
Ist COMMAND1 true, so muss für UND (&&) auch COMMAND2 ausgeführt werden, um zu testen, ob COMMAND2 ebenfalls true ist. Falls COMMAND1 bereits false ist, wird COMMAND2 gar nicht erst ausgeführt.
Ähnlich bei ODER (||): Ist COMMAND1 true, reicht dies bereits aus, um das gesamte Statement true werden zu lassen und COMMAND2 wird nicht ausgeführt. Erst wenn COMMAND1 false ist, muss COMMAND2 ausgeführt werden, um dort auf true zu prüfen.
Tabellarisch kann es folgendermaßen dargestellt werden:

COMMAND1 && COMMAND2
COMMAND1 COMMAND2 RESULT
0 % 0
1 0 0
1 1 1
COMMAND1 || COMMAND2
COMMAND1 COMMAND2 RESULT
0 0 0
0 1 1
1 % 1

% bedeutet, dass der COMMAND nicht ausgeführt wird!

Beliebt sind solche Ausdrücke vor allem zum Abfangen kleiner Abfragen:

[ ! -f /path/to/file.ext ] && exit 1

(falls die Datei file.ext nicht existiert, wird das Programm an dieser Stelle mit dem Fehlercode 1 beendet)

rm text.ext || echo "Datei konnte nicht geloescht werden!"

(Fehlermeldung, falls Datei nicht gelöscht werden konnte)

ls test.ext && touch test.ext

(Datei anlegen, falls nicht existiert)

Noch viele weitere Möglichkeiten sind denkbar und zeigen die Flexibilität dieses Ausdrucks! Zudem lassen sich mehr als zwei Befehl hintereinander reihen (mit beliebig vermischten Operatoren).

Anmerkung: Code in Bourne-Again-Shell (Bash) Syntax

Verfasst am: 28.03.2011 · Kategorien: Linux
Schlagworte: , , , , , , ,  · Kommentare: Keine Kommentare

Terminal im Dateibrowser

Mit dem Paket Nautilus Terminal wird im Dateibrowser Nautilus ein Terminal integriert. Der große Vorteil ist, dass man sich mit der Shell (default: bash) in dem gleichen Verzeichnis befindet, wie mit dem Dateibrowser selbst. Arbeitet man mit Nautilus in einem Verzeichnis und muss einige Operationen über die Shell erledigen, ist es jetzt nicht mehr notwendig ein zusätzliches Terminal zu öffnen und dort dann in das entsprechende Verzeichnis zu navigieren.

Wie die Integration aussieht kann man auf folgendem Screenshot erkennen:

Die Installation erfolgt bequem mittels APT. (Achtung: Fremdquellen können das System gefährden!)

sudo add-apt-repository ppa:flozz/flozz    #Fremdquelle hinzufügen
sudo apt-get update                        #Paketquellen einlesen
sudo apt-get install nautilus-terminal     #Paket installieren
nautilus -q                                #Nautilus neustarten

Von nun an wird das kleine Terminalfenster im Dateibrowser angezeigt. Auf die verschiedenen Einstellungsmöglichkeiten möchte ich nicht weiter eingehen, da sie sich von selbst erklären. Lediglich auf den Punkt Nautilus-Terminal versteckt starten möchte ich hinweisen, weil ich ihn für sehr sinnvoll halte.

Weitere Informationen gibt es auf der Launchpad-Seite von Nautilus Terminal oder auf der Projektseite.

Anmerkung: Die Einfärbung der Bash hat mit dem o.g. Tool nichts zu tun. Sie ist unabhängig in der ~/.bashrc eingestellt!

Verfasst am: 28.10.2010 · Kategorien: Linux
Schlagworte: , , , , , , , ,  · Kommentare: Keine Kommentare

Farbige Manpages

Eine sehr wichtige Anlaufstelle unter Unix/Linux sind die Manpages (Manual Pages, zu deutsch Handbuch-Seiten). Jeder Linuxnutzer sollte sie kennen und damit umgehen können.
Zum Anschauen der Manpages werden normalerweise die Pager more oder less verwendet. Es gibt jedoch eine sehr funktionale Alternative: most.
Neben einigen nützlichen Funktionen, die der Manpage zu entnehmen sind ;-) , kann most den Inhalt der Manpages farbig darstellen.

Falls most noch nicht installiert ist, kann man dies ganz einfach über APT nachholen:

sudo apt-get install most

Damit der Pager nun für die Darstellung der Manpages verwendet wird, ist eine kleine Anpassung in der ~/.bashrc nötig. Folgendes am Ende der Datei einfügen:

export PAGER="most"

Damit die Änderung wirksam wird, muss die ~/.bashrc neu eingelesen werden:

source ~/.bashrc

oder auch via Logout/Login.


Ein “man most” schaut dann so aus:

Auf dem Screenshot sieht man die standardmäßige Einfärbung. Man kann jedoch die Farben anpassen. Wie das funktioniert, kann man in der Datei /usr/share/doc/most/most.rc erkennen.
Die eigene Konfiguration legt man im Homeverzeichnis ab: ~/.mostrc
Mögliche Farben sind hierbei:
black, gray, lightgray, white, red, brightred, green, brightgreen, blue, brightblue, magenta, brightmagenta, cyan, brightcyan, brown, yellow, default
Der erste Farbwert beschreibt die Vordergrundfarbe (foreground, fg), der zweite Farbwert die Hintergrundfarbe (background, bg).

Meine ~/.mostrc:

color normal lightgray black
color status cyan black
color underline brightred black
color overstrike brightblue black

Abschließend empfehle ich einen Blick in die Manpage von most, da dort u.a. einige nützliche Tastaturkürzel erläutert werden.

Verfasst am: 28.10.2010 · Kategorien: Linux
Schlagworte: , , , , , , , , ,  · Kommentare: 1 Kommentar

Ubuntu 10.10 Maverick Meerkat mit selbstgebauter Netbook-Oberfläche


Einleitung

Seit fast einer Woche ist Ubuntu 10.10 Maverick Meerkat nun freigegeben und ich habe in dieser Zeit einige Experimente gewagt. Es ging darum, mein Netbook (Asus EEE 901) mit einer möglichst Platz gewinnenden, komfortablen und hübschen Oberfläche zu versorgen.
Naheliegend ist natürlich dafür die Ubuntu Netbook Edition (UNE, ehemals UNR) zu verwenden. Wie man vielleicht schon ahnt, konnte mich diese aber nicht zufrieden stellen. Die neue UNE mit Unity ist, nach meiner Erfahrung, noch nicht wirklich produktiv zu gebrauchen. Bei meinen Tests konnte ich noch viele Mängel feststellen und zweifle an dem Gesamtkonzept. Wie man gleich sehen wird, kann man nämlich im horizontalen Panel jede Menge Informationen verstauen, ohne ein vertikales Panel zu benötigen.
Nachdem die aktuelle UNE nicht mehr in Frage kommt, habe ich mich auf die normale Gnome-Desktopoberfläche konzentriert. Also habe ich die normale Ubuntu-Version installiert und ein wenig Kosmetik betrieben.

Vorschau und Motivation

Zunächst einmal ein Screenshot, damit man eine Idee bekommt, worum es im Nachfolgenden geht:
Netbook Desktop

Das Ziel der Konfigurationsarbeit ist es, Gnome dahingehend anzupassen, dass möglichst viel Platz für Fensterinhalte entsteht und trotzdem eine komfortable Handhabung möglich ist.

Voraussetzungen

  • installiertes Ubuntu mit normaler Gnome-Desktopoberfläche
  • funktionierendes Compiz
  • Internetverbindung

Unteres Panel ersetzen

Das untere Panel wird bei Gnome hauptsächlich als Fensterwähler benutzt, d.h. es werden dort alle laufenden Anwendungen aufgelistet und man kann mit Klick auf die jeweilige Anwendung sie in den Vordergrund holen. Eine solch elementare Funktion darf natürlich nicht unter den Teppich gekehrt werden, daher greift man zu einer Alternative. Sie heißt window-picker-applet und ist ein Applet für die Gnome-Panels.
Man kann sich das Paket über APT installieren:

sudo apt-get install window-picker-applet

Nach der Installation fügt man das Applet zum oberen Panel hinzu: Rechtsklick auf das Panel und den Menüpunkt Zum Panel hinzufügen… anklicken. In der Liste ist das Applet als Fensterwähler zu finden.
Ab sofort werden werden alle laufenden Anwendungen als kleine Symbole im oberen Panel angezeigt. Die Symbole sind deutlich platzsparender als die Schaltflächen des alten Fensterwählers und haben noch einen weiteren Vorteil. Neben den Symbolen wird die Titelleiste des aktiven Fensters angezeigt wird (allerdings nur für maximierte Fenster). Somit wird die Titelleiste bei maximierten Fenstern quasi doppelt angezeigt. Dazu aber später mehr.
Das untere Panel ist jetzt obsolet und kann entfernt werden: Rechtsklick auf das Panel und den Menüpunkt Dieses Panel löschen anklicken.

Optimierung des oberen Panels

Die große Menüleiste im oberen Panel verbraucht sehr viel Platz, weshalb sie kurzerhand gelöscht wird: Rechtsklick auf den Bereich vom Ubuntu-Logo bis zu System und den Menüpunkt Aus dem Panel entfernen anklicken. Jetzt fügt man eine etwas kleinere Version wieder hinzu. Man kann es sich fast schon denken: Rechtsklick auf das Panel und den Menüpunkt Zum Panel hinzufügen… anklicken. Das gewünschte Applet nennt sich Hauptmenü.
Wer die Schaltfläche zum Desktop anzeigen vermisst, kann sie ebenso mit dem gerade beschriebenen Verfahren hinzufügen.
Um weiteren Platz im oberen Panel zu bekommen, kann man die indicator-Applets löschen:

sudo apt-get remove indicator-me indicator-messages

Ein weiterer Punkt ist die Uhrzeit- und Datumsanzeige. Mit einem Rechtsklick kann man unter Einstellungen auswählen, welche Werte angezeigt werden sollen. Da man das Datum auch angezeigt bekommt, wenn man mit dem Mauszeiger auf der Uhrzeit verweilt, kann man es getrost ausblenden.
Wie man Verknüpfungen zum Panel hinzufügt oder auch die Applets untereinander verschiebt, möchte ich jetzt hier nicht weiter erklären. Aber nicht ohne auf das Applet Schublade zu verweisen, was ermöglicht viele Verknüpfungen in einer Schublade zu verstauen.

Titelleiste & Compiz

Wie bereits oben erwähnt, wird die Titelleiste bei maximierten Fenstern doppelt angezeigt. Die gewöhnliche Titelleiste soll natürlich eingespart und kann mit Compiz entfernt werden. Dazu muss der CompizConfig Einstellungs Manager gestartet werden (unter System → Einstellungen zu finden).
Falls er noch nicht installiert ist, kann das wie folgt nachgeholt werden:

sudo apt-get install compizconfig-settings-manager

In der Kategorie Effekte findet man Fensterdekoration, wo man nun unter dem Punkt „Dekoration für Fenster“ folgendes einträgt:

!state=maxvert

Somit verschwindet die Titelleiste bei maximierten Fenstern und es ist wieder viel Platz gespart.

Erscheinungsbild

Weiterführend empfehle ich ein Theme für Metacity, was die Titelleiste bei nicht maximierten Fenstern möglichst flach anzeigt. Ich verwende dazu Rezlooks, was unter gnome-look.org zu finden ist.
Als GTK-Theme kommt Mist zum Einsatz.

Mozilla Firefox

Der Browser ist ein zentrales Element des Computers, weshalb ich an dieser Stelle auch kurz erläutern möchte, wie man auch den Browser an eine geringe Auflösung anpassen kann.
Wichtig sind dafür die beiden Addons Hide GUI Bars und All-in-One Sidebar. Die Konfiguration der beiden Addons erfordert ein bisschen Einarbeitung, ermöglichen aber den Fensterinhalt des Browsers zu maximieren.
Mit Hide GUI Bars werden diverse Leisten ein- und ausgeblendet. Um dann noch an die Lesezeichen zu kommen, empfehle ich die All-in-One Sidebar. Auf Knopfdrück kann sie sich auch ein- und ausblenden lassen.

Maximus

Der Vollständigkeit halber sollte noch Maximus erwähnt werden. Installiert man das gleichnamige Paket, werden alle Fenster maximiert dargestellt (auch Bestandteil der UNE). Ich empfinde es aber eher lästig und verwende es auch nicht.

weitere Screenshots



Verfasst am: 16.10.2010 · Kategorien: Linux
Schlagworte: , , , , , , , , , , , , , , , ,  · Kommentare: 1 Kommentar
vor »