Is it just み?

Linux

[Linux] Verzeichnis mit Hard-Links kopieren

by on Nov.16, 2011, under Linux

Wieder einer dieser Einträge um es selbst nicht wieder zu vergessen…

Wenn man versucht ein Verzeichnis mit Hard-Links einfach so zu kopieren, erstellt man für jede Datei eine neue im Zielverzeichnis, auch wenn im Original zwei Dateien auf die gleichen Daten auf der Festplatte zeigen (hard link).

In meinem Fall hatte ich ein inkrementelles Backup gemacht, bei dem alle unveränderten Dateien nur “hart” mit der Datei aus dem letzten Backup verlinkt wurden, so habe ich jeweils einen Snapshot des so gesicherten Verzeichnisses ohne sehr viel Platz einzunehmen. Beim Versuch meine Backup-Platte auf eine Größere umzuziehen sagte er mir dann, dass mir ein paar TB an Platz fehlen.

Die Lösung ist einfach: Hard-Links mit kopieren. Das mache ich mit dem gleichen Tool mit dem ich das Backup auch erstellt habe, rsync:

rsync -a -H -v /altePlatte/backup /neuePlatte/backup

Die Optionen machen folgendes:

-a Ist eine zusammenfassung (fast) aller Optionen die man benötigt um ein Backup mit rsync zu machen
-H Der springende Punkt – sucht nach Hard-Links und stellt diese im Zielverzeichnis wieder her
-v Zeigt welche Datei gerade kopiert wird. Gibt mir ein besseres Gefühl, wenn ich nicht Stundenlang auf einen leeren Bildschirm gucke und einfach nur hoffe, dass im Hintergrund alles läuft.

Vorsicht: die “-H”-Option benötigt ziemlich viel Speicher, weil rsync sich für jede Datei merken muss, wo ihre Daten liegen.

Comments Off on [Linux] Verzeichnis mit Hard-Links kopieren :, , more...

[Ubuntu] Verschlüsselte Partition nimmt Passwort nicht mehr an

by on Dec.23, 2010, under Linux

Falls jemand von euch auch mal auf das Problem stößt:

Nach der Neuinstallation sagte mir mein Ubuntu plötzlich, dass meine Passwörter falsch seien – egal wie oft ich versuchte.

Lösung: “sudo apt-get install cryptsetup”
Das kleine Programm cryptsetup war nicht installiert und so liefen meine Passwörter ins Leere – Ubuntu sagte mir aber “Falsches Passwort”. Jetzt läuft alles wieder.

Comments Off on [Ubuntu] Verschlüsselte Partition nimmt Passwort nicht mehr an :, , , more...

[Linux] Festplatte sicher löschen

by on May.06, 2010, under Computer, Linux

Wenn man eine Festplatte wegwirft oder verkauft, will man ja normalerweise sicher gehen, dass keine persönlichen Daten mehr von dieser Platte ausgelesen werden können – einfaches “Löschen” reicht da nicht, weil “löschen” nur bedeutet, dass der Verweis im Dateisystem auf die Daten entfernt wird, jedoch die Daten selbst werden nicht überschrieben (das wäre nämlich ziemlich langsam). Um nun also sicher zu gehen, kann man die Festplatte mit Daten voll schreiben, das ist einfach und effektiv, denn aller Paranoia zum Trotz hat es bisher niemand geschafft einfach überschriebene Daten wiederherzustellen.

(Im folgenden muss man natürlich /dev/DEVICE noch durch das echte Festplatten-Gerät ersetzen, also sowas wie /dev/sdb oder /dev/sdc – aber bitte vorher sicher gehen, dass man nicht die falsche Platte platt macht z.B. indem man die Platte mountet und dann mit “df -h” oder “mount” überprüft welches Gerät wirklich an der Stelle hängt. Aber Vorsicht: Nicht im normalen System das Gerät raussuchen, dann mit Livesystem von CD starten und die Platte überschreiben, da könnte sich der Gerätenahme ändern.)

Die einfache Version schreibt die Festplatte mit Nullen voll:

dd if=/dev/zero of=/dev/DEVICE bs=1M

bzw. mit pseudo-zufälligen Daten:

dd if=/dev/urandom of=/dev/DEVICE bs=1M

Wichtig: /dev/urandom benutzen, sonst kann es ziemlich lange dauern, /dev/random wartet nämlich bis das System wirklich halbwegs zufällige Daten gesammelt hat und gibt diese dann aus, während /dev/urandom (u für “unlocked”) nicht wartet und dann weniger sichere Zufallszahlen liefert – was bei dieser Verwendung aber relativ Schnuppe ist.

Mit Hilfe des bs-Parameters kann man ein wenig an der Geschwindigkeit schrauben – einfach mal ein paar Werte ausprobieren und 20 Sekunden schreiben lassen, dann mit Strg-C abbrechen – dd zeigt dann an wie schnell geschrieben wurde in MB/sec.

Wenn man die Festplatte gleich noch testen will während man sie überschreibt, gibt es folgende Möglichkeit:

badblocks -w -t random /dev/DEVICE

Dieses Programm schreibt nämlich nicht nur alle Sektoren voll, sonder überprüft hinterher auch ob die Daten genau so wieder gelesen werden können. Also die perfekte Möglichkeit Daten zu vernichten, wenn man eine Festplatte verkaufen oder selbst weiter nutzen möchte. Diese Methode ist natürlich langsamer als die dd-Variante oben.

Comments Off on [Linux] Festplatte sicher löschen :, , more...

[Linux] CPU Taktung

by on Nov.10, 2009, under Linux

Dies ist einer der Einträge in meinem Blog, der wohl hauptsächlich deshalb da ist, weil ich es wohl selbst wieder vergessen und daher nachschlagen müssen werde.

Mit Hilfe des Befehls
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
kann man sich ausgeben lassen welche Taktfrequenzen von der CPU unterstützt werden. Da man ja nun mal keine unterschiedlichen CPUs auf dem Board hat, sollten die ausgegebenen Werte für alle CPUS des Systems gelten, auch wenn man nur “cpu0” (also die erste CPU) abgefragt hat.

Die Ausgabe kann dann z.B. so aussehen:
2000000 1800000 1000000

Dies sind die unterstützten (funktionierenden) Werte, die man dann z.B. dem Programm cpufreq-selector übergeben kann:
sudo cpufreq-selector -f 1000000

Obiger Befehl stellt meine CPU in den Stromsparmodus. (sudo davor nicht vergessen, denn an der CPU-Geschwindigkeit darf nur root herumspielen)

Natürlich geht das ganze auch deutlich einfacher indem man sich eines der unzähligen Programme wie den CPU Frequency Scaling Monitor (gehört zu Gnome) installiert und es bequem über den Desktop einstellt. Spätestens wenn man das mal per ssh auf einem entfernten Rechner einstellen will hilft dieser manuelle Weg jedoch sehr.

Comments Off on [Linux] CPU Taktung :, , more...

Komprimierung mit 7z

by on Nov.09, 2009, under Computer, Linux

Dies ist einer der Einträge in meinem Blog, der wohl hauptsächlich deshalb da ist, weil ich es wohl selbst wieder vergessen und daher nachschlagen müssen werde.

Ich komprimiere meine Dateien fast immer mit 7z, nur wenn ich Quellcode weitergebe nutze ich das traditionelle tar.bz2. Vor allem habe ich mir angewöhnt alles was ich an CD und DVD Images besitze vor dem verschieben auf die Backupplatte noch einmal zu komprimieren – der Zugriff muss ja nicht schnell gehen, sondern im Optimalfall nicht einmal nötig sein.

Da ich in diesem Fall keine Rücksicht auf irgend wen nehmen muss, kann ich die Parameter so wählen, dass ein für meinen Rechner optimale Komprimierung herauskommt – auch wenn es sich deshalb auf Rechnern mit wenig Arbeitsspeicher nicht mehr entpacken lassen würde.

Mein Kommando zur Komprimierung lautet (Achtung, nicht auf Systemen nutzen die weniger als 4GB Hauptspeicher haben):
nice -n 10 7z a -mx=9 -mmt=16 -t7z -mfb=258 -md=384m -ms=8g "[ZIEL].7z" "[DATEN]"

Kurze Erklärung:

Kommandoteil Bedeutung
nice -n 10 Starte das folgende Kommando mit geringer Priorität. Das bedeutet, dass man nebenher noch relativ gut arbeiten kann, bzw. andere Prozesse weniger ausgebremst werden.
7z a Füge Daten zu einem Archiv hinzu (a steht für “add”).
-mx=9 Benutze die maximale Kompressionsstufe.
-mmt=16 Bestimmt die Anzahl der benutzten Threads. Alternativ kann man auch -mmt=on angeben, dann bestimmt 7z selbst die Anzahl der Threads. Bei meinen Tests war jedoch die Anzahl 16 (ich habe einen Dualcore Prozessor) seltsamerweise fast 10% schneller als die Angabe on.
-t7z Sagt 7z, dass es das 7z-Format benutzen soll. Eigentlich überflüssig wenn wir den Archivnamen auf .7z enden lassen. Da 7z aber auch so ziemlich alle anderen halbwegs frei verfügbaren Komprimierungsverfahren unterstützt, gehe ich hier noch einmal sicher, dass auch wirklich das effiziente 7z benutzt wird.
-mfb=258 Die Wortgröße wird hier festgelegt. Faustregel: Je höher die Wortgröße, desto besser die Kompression. Dies ist, soweit ich weiß, der derzeitig maximal zulässige Wert.
-md=384m Die Wörterbuchgröße. Auch heir gilt die gleiche Faustregel wie bei der Wortgröße, allerdings kann man hier noch deutlich größer werden. In diesem Fall ist die Wörterbuchgröße 384 MB – das bedeutet, dass man beim Entpacken schon mindestens 512 MB RAM haben muss und beim Komprimieren ungefähr das Zehnfache der Wörterbuchgröße. Ich habe 6 GB RAM und benutze daher diese Einstellung wenn ich über Nacht die Backups komprimiere. Sobald ich parallel noch Firefox, Thunderbird und Eclipse (um mal Speicherfresser zu nennen) benutzen will, setze ich den Wert auf unter 300m.
-ms=8g Die maximale Größe der soliden Blöcke – auch hier gilt die gleiche Faustregel, auch wenn der Einfluss mit steigender Größe immer geringer wird. Alternativ sollte ein -ms=on auch dafür Sorgen, dass ein ganzes DVD-Image als ein großer Block (“solid”) komprimiert wird.
“[ZIEL].7z” Das Zielarchiv. Es muss nicht auf .7z enden, aber das hat sich aus praktischen Gründen eingebürgert. Unter Windows sollte es natürlich auf jeden Fall so heißen, da Windows das Archiv nicht automatisch als solches erkennen kann.
“[DATEN]” Das ist dann die Datei, die Dateien oder das Verzeichnis das komprimiert werden soll. Die Anführungsstriche kommen allerdings nicht um mehrere Dateien oder Verzeichnisse, sondern jeweils um eins (damit es keine Probleme mit Leerzeichen gibt).

Um dann viele Images über Nacht zu komprimieren benutze ich folgendes Mini-Script:

#!/bin/bash
for i in *.iso; do
nice -n 10 7z a -mx=9 -mmt=16 -t7z -mfb=258 -md=384m -ms=8g "$i.7z" "$i"
if [[ $? -eq 0 && -f "$i.7z" ]]; then
rm "$i"
fi
done

Comments Off on Komprimierung mit 7z :, , , , , more...

Multi-Desktop-Background-Creator…

by on Aug.27, 2009, under Linux, Programmierung, Sonstiges

Ich arbeite entweder mit zwei Rechnern nebeneinander die über Synergy verbunden sind oder an einem Rechner mit zwei Monitoren. Bei zwei Monitoren an einem Rechner sieht das Hintergrundbild immer schlecht aus. Deshalb habe ich ein Bash-Script geschrieben dem man beliebig viele Monitorauflösungen von links nach rechts übergibt und einen Ordner in dem die Bilder gesucht werden, dass dann zufällig aus den passenden Bildern ein großes passendes Bild zusammenstellt. Zusätzlich kann man konfigurieren ob nur passende Auflösungen verwendet werden sollen oder die Bilder nur verkleinert oder auch vergrößert werden sollen um auf den Monitor zu passen.

Hier die Beschreibung der Kommandozeilenoptionen:

        -----===== createMultiDesktopWallpaper =====-----

 "createMultiDesktopWallpaper --of=OUTFILE sf=SEARCHFOLDER  RES1 RES2 [RES3 [...]]"

Concatenates the images in the given order and writes the result to the file
specified by --of

Obligatory parameters:
 --of=         The out-file, meaning the file to write the concatenated image
               to. This file will be overwritten without notice.
 --sf=         The folder to search in for images.
 RES[1-x]      The resolution of the Desktops for which the background should
               be created from left to right. The RES-parameters must have the
               form of WIDTHxHEIGHT (e.g. '1280x1024'). There have to be at least
               two RES-parameters

Optional parameters:
 --mode=       The mode for choosing the images. Possible values:
                 exact  - For every resolution an image with exactly the given
                          size is used. No resizing of images.
                 exact2 - Like exact, but needs a preordered search-folder. Use the
                          orderImagesByResolution script to order it. (Faster)
                 down   - Uses images that are at least as big as the given size
                          and resizes bigger images. This might lead to images being
                          cropped because they have a differnt ratio.
                 any    - Resizes any picture to the given resolution. This might
                          look bad if you have for example a 24" monitor and some
                          640x480 images in the search-folder
               Default: exact
 --background= The color of the background if the pictures do not have the same
               size. (default: black)
 --same        Use the same image for all resolutions. Only works with mode 'down'
               or 'any'
 --align=      Vertical alignment of images that are smaller that the biggest
               image given
 --verbose     Output additional information

Example:
   "createMultiDesktopWallpaper --of=bg.png --sf=Pictures 1920x1200 1280x1024"

Um das Script zu benutzen benötigt man ImageMagick und die Scripte createMultiDesktopWallpaper und concatenateImage. Wenn man die Geschwindigkeit optimieren will, kann man das orderImagesByResolution Script benutzen um die Bilder vorher zu ordnen und dann den Modus “exact2” nutzen.

Das Ergebnis sieht dann bei 1920×1200 und 1280×1024 z.B. so aus: (Aus zwei Photos die ich gemacht habe)

Generated Wallpaper

Generiertes Wallpaper

Eine andere Sprache als bash wäre bezüglich Caching sicher sinnvoll gewesen, aber nicht bei meiner kleinen Auswahl an Wallpapern lohnt sich ein Caching Mechanismus noch nicht. Natürlich lässt sich ein Dateibasiertes Caching auch mit bash realisieren, aber besonders elegant geht das nunmal auch nicht.

Comments Off on Multi-Desktop-Background-Creator… :, , , , more...

Universelle Bashscript Vorlage

by on Aug.26, 2009, under Linux, Programmierung

Ich schreibe immer mal wieder kleine Bashscripte für Alltagsaufgaben wie Backups und kleinere Aufgaben für die sich einfach keine großen Programme lohnen. Was mir immer gefehlt hat ist eine grundsätzliche Vorgehensweise die ich auf etwas größere Scripte anwenden kann um Parameter zu verarbeiten und eine Hilfe auszugeben.

Heute habe ich mir mal die Mühe gemacht eines meiner größeren Scripte so umzuschreiben, dass es als allgemeine Vorlage genutzt werden kann. Vielleicht hilft es ja jemandem.

Das Bash Script Template kann man sich hier herunterladen.

Das “Besondere” an dieser Scriptvorlage ist dass für die Hilfe alle Texte am Anfang des Script als Variablen definiert werden und die Parameter mit der vorgegebenen Methode in beliebiger Reihenfolge an das Programm übergeben werden können.

Über Rückmeldungen und Verbesserungsvorschläge freue ich mich immer.

Comments Off on Universelle Bashscript Vorlage :, , , more...