Archiv der Kategorie: Tools

Zerkratzte DVDs mit ddrescue retten

Das Kommandozeilen-Tool dd ist vielen bekannt. Mit dd kann man Rohdaten von einem Blockdevice (Laufwerk oder Datei) auf ein anderes Blockdevice schreiben. Das ist praktisch, wenn man mal schnell die Partitionstabelle der Festplatte sichern will (dd if=/dev/sda of=mbr.img bs=512 count=1) oder z.B. einen bootbaren USB-Stick aus einem Ubuntu-Image erstellen will (dd if=ubuntu.iso of=/dev/sdb bs=4M). Leider versagt dd bei nicht lesbaren Daten und bricht einfach ab. Es eignet sich also nicht, um ein ISO-Abbild einer CD oder DVD zu erstellen, falls diese verkratzt ist.

An dieser Stelle hilft ddrescue. Es gibt verwirrenderweise zwei Programme mit diesem Namen (das andere ist dd_rescue). Ich spreche hier über GNU ddrescue, welches in Debians im Paket gddrescue zu finden ist. Ddrescue erlaubt im Gegensatz zu dd bei kaputten Blöcken mehrere Leseversuche.

Im ersten Schritt wird erst mal alles, was ohne Probleme lesbar ist in eine ISO-Datei geschrieben. Probleme werden in einer Log-Datei mitgeschrieben.

ddrescue -b 2048 -n -v /dev/sr0 dvd.iso rescue.log

Die angegebene Blockgröße (2048) ist die Standard-Blockgröße bei DVDs. Das angegebene Device ist das DVD-Laufwerk und kann auch anders heissen. Bei eingelegter DVD kann man durch einfache Eingabe von mount nachschauen, wie es lokal heisst.

Bei angezeigten Fehlern, startet man einen zweiten Versuch, der sich auf die kaputten Blöcke konzentriert.

ddrescue -b 2048 -d -r 3 -v /dev/sr0 dvd.iso rescue.log

Der Parameter -d sorgt für Direktzugriff auf das Gerät (kein kernel caching) und -r 3 gibt die Anzahl der Leseversuche bei kaputten Blöcken an. Kommt es weiterhin zu Fehlern, kann man noch mal das folgende probieren:

ddrescue -b 2048 -d -R -r 3 -v /dev/sr0 dvd.iso rescue.log

Der Parameter -R kehrt die Leserichtung um, was bei meinen Versuchen häufig noch ein paar Sektoren mehr gebracht hat.

Verbleibende Lesefehler sind bei einer Video-DVD nicht wirklich schlimm, da DVDs in ihren Rohdaten schon ziemlich viel Fehlerkorrekturdaten enthalten (CDs im Übrigen auch). Im schlechtesten Fall hat man also kleine Bildartefakte an den problematischen Stellen.

Die resultierende ISO-Datei kann man einfach mit einem Brenn-Programm seiner Wahl auf eine neue DVD brennen, oder mit einem Videoplayer wie VLC direkt abspielen.

Mailboxen auf neuen Server umziehen

Ich musste gerade einen Haufen E-Mail Adressen von einem 1und1 Account auf einen eigenen Server umziehen. Das ganze war dank imapsync ziemlich schnell erledigt. Ein paar Hürden waren allerdings doch zu nehmen, daher poste ich hier mal den kompletten Befehlsaufruf, mit dem es bei mir gut funktionierte.

Beim Umzug wollte ich auf dem Ziel neben den von Usern angelegten Ordner nur noch Standard-Namen wie Sent, Drafts, Spam und Trash (welche in Roundcube auch mit lokalisierten Namen angezeigt werden). Daher umfasst mein Befehlsaufruf auch Migrationen von Ordner wie Gesendete Objekte nach Sent, Entwürfe nach Drafts, usw..

imapsync \
# verbindungsdaten
--host1  --user1 "" --password1 "" --authmech1 PLAIN \
--host2  --user2 "" --password2 "" --authmech2 PLAIN \
# Statistiken auslassen, Geschwindigkeit gewinnen
--nofoldersizes --skipsize --fast \
# nur über Message-ID matchen
--skipheader '^(X-|Received|MIME-|Content-|Disposition-|From|Cc|Reply-|Subject|To|DomainKey|Date).*' \
--useheader Message-ID \
# diese Ordner nicht syncen
--exclude '(?i)\b(Junk|Spam|Trash|Papierkorb)\b' \
# IMAP flags die nicht Standard sind ignorieren (beginnen mit \)
--regexflag 's/\\\\(?!Answered|Flagged|Deleted|Seen|Recent|Draft)[^\s]*\s*//ig' \
# Ordner die im Ziel anders benannt sein sollen
--regextrans2 's/Gesendete Objekte$/Sent/' --regextrans2 's/Entw&APw-rfe$/Drafts/'

Beim ersten Test lohnt es sich noch den Parameter –dry anzuhängen. Die Homepage von imapsync zeigt, wie man in Massen E-Mails abarbeitet.