Backup-Shellscript für diesen Webserver

Vor einem Monat fiel diese Seite ja einem WordPress Redirect Hack zum Opfer. Ein verwendbares Backup war gut zwei Jahre alt, was insofern für mich gut war, dass ich der Manipulation des Blogs nachgegangen bin und selber wieder korrigieren konnte. Hätte ich ein aktuelles Backup gehabt, dann hätte ich vermutlich recht schnell den Restore durchgeführt und wäre dann wieder auch wieder in dasselbe Problem gerannt. Aber, es ist trotzdem wichtig, dass man regelmäßig Backups erstellt. Da durch die Piwigo-Fotogalerie die ich als Unterverzeichnis vom Blog angelegt habe, das gesamte Verzeichnis nun sehr viel Speicherplatz benötigt, komme ich mit der kostenlos-Variante vom WordPress-Plugin Duplicator nicht mehr weiter. – Mal ganz davon abgesehen, dass ich den Einsatz von Plugins doch von Anfang an etwas kritisch gesehen habe und mit dem Hack diese Haltung eher noch verstärkt hat.

Da ich mir für dieses Blog bei meinem Hoster nun keinen reinen Webspace, sondern eine virtuelle Computerinstanz mit einem Linux gebucht habe, stehen mir dadurch auch alle üblichen Kommandozeilenwerkzeuge und Programme zur Verfügung, mit denen ich mir mein eigenes Backup-Programm in Form eines kleinen Shellscripts basteln kann. Das ist dann spätestens jetzt die Gelegenheit sie auch mal zu nutzen. Und so habe ich inzwischen einen ersten funktionierten Entwurf im chaos.expert GitLab veröffentlicht, in der Hoffnung, dass ich es schaffe, mit der Zeit etwas auszubauen und zu optimieren. – Auf jedem Fall wird dieses Shellscript mittels einen Cron-Jobs einmal wöchentlich aufgerufen und es sollen immer die letzten vier Archive für einen Restore auf der Instance lokal gespeichert bleiben. Sprich: Kommt ein neues Archiv hinzu – es muss dann schon wenigstens das „Fünfte“ sein, wird dann das älteste Archiv wieder gelöscht.

Für den Fall dass die komplette virtuelle Linux-Server-Instanz ohne Ersatz offline geht und bei meinem Hoster gekündigt wird, muss ich mir noch ein Konzept für die dezentrale Speicherung der Archive überlegen, falls ich zu einem späteren Zeitpunkt den Webserver mit den alten Inhalten wieder online bringen möchte. Es soll also spannend bleiben!

Links:

Commandlinefu

Als ich im vergangenen Herbst nach einer Lösung im Internet recherchiert habe, um eine Audio-Datei (wav, mp3, etc.) aus der Tonspur einer DVD zu erzeugen, bin ich in meinen Suchergebnissen über Beispiele für Kommandozeilen-Befehle auf der Website www.commandlinefu.com aufmerksam geworden. Bei Commandlinefu kann jeder nach der Registrierung einen kleinen Beitrag einstellen für einen Kommandozeilen-Befehl den er oder sie als erwähnenswert erachtet. Dabei wurden – und werden Befehle präsentiert, die entweder etwas Praktisches, etwas Nützliches, etwas Interessantes oder einfach nur etwas Witziges ausführen.
So gab es bis vor etwa zehn Jahren alternative Beispiele, wie sich ein öffentlicher SSH-Schlüssel auf einem Ziel-Host in die Datei ~/.ssh/authorized_keys einfügen lässt. Hintergrund war, dass Apple zwar die vollständige SSH-Suite seit Beginn von Mac OS X als festes Bestandteil integriert hat, aber über etliche Versionen hat das Programm ssh-copy-id gefehlt. So wurden alternative Wege erarbeitet, die mit Hilfe der Standard-Unix-Tools den Schlüssel über ein einziges Shell-Kommando auf den Ziel-Host brachten.xx
Ich habe mal angefangen, ein wenig in der mittlerweile über fast 12 Jahre alten Sammlung zu stöbern und eine wirklich kleine Auswahl in meinem Wiki gesammelt. Aber es steckt noch viel Potenzial in der Sammlung weitere Befehls-Schätze zu entdecken. Es braucht nur etwas Internet und vielleicht einen halben oder ganzen Tag, an dem sich nichts sinnvolleres mit der vorhandenen Freizeit anstellen lässt.
Es gibt im übrigen auch einen Twitter-Account zu Commandlinefu, der einem über einen neuen Beitrag informiert.

Links:

MP3-Dateien aus der Tonspur einer DVD erzeugen

Meine DVD-Sammlung besteht fast nur aus Musik-DVDs. Von einigen der darauf enthaltenen Konzerte und Musik-Video-Clips, mochte ich dann immer auch eine Audioversion im MP3-Dateiformat bei einzelnen Lieder, beziehungsweise bei Konzerten eine AAC-codierte m4a-Datei mit Kapitelmarken. – Wobei man sagen muss, dass das MP3-Format selber auch Kapitelmarken unterstützt, nur gibt es bloß eine handvoll Software-Player die Kapitelmarken überhaupt unterstützen, bei den Hardware-Player ist mir selber sogar überhaupt keiner bekannt. Grund ist wahrscheinlich, dass die Funktion der Kapitel erst in einer Weiterentwicklung des MP3-Formats implementiert wurde, wo es sich bereits so weit etabliert hatte, dass es auch keine Rolle mehr gespielt hatte. Auch die Funktionalität der Kapitelmarken in AAC-codierten m4a-Dateien hat in der Music-App auf Apples iOS mal mehr oder weniger zuverlässig funktioniert.

Mein Workflow für die Extraktion von dem Audio auf der DVD sah seit dem Jahr 2003 so aus, dass ich am Computer die DVD mit einem Software-Player abgespielt habe und für den Vorgang ein Wave-Editor das Signal aus dem Audio-Mixer des Betriebssystems aufnahm. Dieses Verfahren war sehr störungsanfällig, da ich sicherstellen musste, dass kein anderes Programm mit Klangwiedergaben in die Aufnahme reingrätschen durfte. Passierte dies, so war die Aufnahme hin und musste neu begonnen werden, und selbst wenn es bei dem ersten Versuch geklappt hatte, so war dies Verfahren dennoch auch zeitaufwendig, denn die Audio-Spur auf der DVD musste ja mindesten einmal in der gesamten Länge abgespielt werden. Danach ging es an das Zurchtstutzen der Enden durch Schneiden, die Anpassung des Signalpegels und dem re-Encoding in die MP3-Datei.
Für die AAC-codierten m4a-Dateien mit den Kapitelmarken musste ich die Aufnahme erst als Wave-Datei speichern, welche ich dann unter GarageBand in ein neues Podcast-Projakt importiert habe. Nur die Podcast-Funktion von Apples GarageBand ist in der Lage die gewünschten Kapitelmarken zu setzen. Und klar: die fertigen Aufnahmen mit allen Kapitelmarken dürfen dann nur als m4a-Datei mit AAC exportiert werden, wenn diese beibehalten werden sollen. Auch GarageBand ist nicht in der Lage MP3s mit Kapitelmarken zu erstellen.
Wenn ich ehrlich bin, so habe ich das Gefühl, dass gerade durch den Schritt des analogen Aufzeichnens meine Aufnahmen bisher schon qualitativ bereits gelitten haben.

Da mir vor ein paar Tagen nach langer Zeit mal wieder eine Konzert-DVD in der Stadtbibliothek in die Hände gefallen ist, von der ich mir einen Großteil der Songs als MP3-Dateien nochmals als eine Art Best-of zusammenstellen möchte, ist das Thema „Extrahieren der Audio-Spur von DVD“ mir wieder in den Fokus gerückt.

Soll direkt aus der Audio-Spur der DVD eine MP3-Datei erstellt werden, ohne dass eine Audio-Bearbeitung vorher stattfindet, ist der für mich beste Workaround nun folgender.:

  • Das ISO-Image der DVD mit HandBrake einlesen.
  • Ein Encoding-Preset wählen, was am Ende eine schlecht mögliches Ergebnis im Video-Encoding ergibt. Der Schnelligkeit halber, denn der Video-Stream wird sowieso dann wieder weggeworfen.
  • Bei den Audio-Einstellungen MP3 als Codec wählen und die gewünschte Bitrate wählen. Für Musik 192 zum Beispiel.
  • Dann kann das Encoding gestartet werden.

Für das eigentliche Extrahieren der Audio-Spur, die ja bereits im gewünschten MP3-Format im MP4-Container enthalten ist, kommt nun das wirklich unschlagbar gute Kommandozeilenprogramm ffmpeg zum Einsatz.

ffmpeg -i Sample.m4a -vn -acodec copy Sample.mp3

Am Ende noch vielleicht Dateinamen anpassen und die id3-Tags bearbeiten. – Fertig!

Soll die Audio-Spur vor dem finalen Encoding als MP3 oder als AAC-m4a-Datei noch bearbeitet werden, so muss die Audio-Spur erst einmal unkomprimiert von der DVD extrahiert werden. Wer wie ich am liebsten das MP4-Containerformat mit der Videodateiendung .m4v verwendet, so muss dieses erst einmal in HandBrake als Zielformat in ‚mkv Datei‘ geändert werden. Grund ist, dass es über HandBrake nur mit mkv-Dateien möglich ist, die Audiospur der DVD mit dem Quell-offenen Audiokompressions-Codec FLAC verlustfrei zu Encodieren. Unter den Audioeinstellungen kann als Codec noch zwischen ‚FLAC 16-Bit‘ und ‚FLAC 24-Bit‘ gewählt werden. Danach das Encoding wieder starten.

Für das Extrahieren der FLAC-Datei kommt nun wieder ffmpeg zum Einsatz.:

ffmpeg -i Sample.mkv -acodec flac Sample.flac

Die erzeugte FLAC-Datei mit der verlustfreien Audiospur kann dann mit dem Audioeditor Audacity geöffnet und bearbeitet werden.

Für mich stellt sich weiterhin das Problem mit den Kapitelmarken. Da GarageBand leider nur den Import von MP3- und Wave-Dateien unterstützt, muss ich das bearbeitete Audio mit Audacity erst als Wave-Datei exportieren. Dann die Wave-Datei wie bereits früher gehandhabt, in GarageBand in ein neues Podcast-Projekt importieren, setzen der Kapitelmarke und das Projekt als AAC exportieren, damit die Marken funktionieren.

Es sei noch angemerkt, dass HandBrake auch in der Lage ist, den Signalpegel der Audiospur mittels Gain anzuheben. Davon möchte ich aber abraten, da dies vermutlich am Ende zu einem permanenten Try-and-Error Spiel führt, bis der Pegel in einem sinnvollen Volumen erhöht ist. Ich zum Beispiel könnte nie vorhersagen, welche akustische Dynamik eine Tonspur hat, und sehr schnell sind bei der unvorsichtigen Handhabung des Reglers, Stellen innerhalb der Tonspur – wenn nicht sogar über die gesamte Länge – übersteuert. Deswegen möchte ich immer die Benutzung eines Audio-Wave-Editors für die Bearbeitung einer Tonspur empfehlen. Audacity ist seit Version 2.3 in der Lage die Übersteuerten Stellen einer Tonspur mit einer roten Markierung nun kenntlich zu machen.

Bei meiner aktuellen DVD aus der Stadtbibliothek handelt es sich um eine Konzertaufnahme der Rolling Stones aus dem Jahr 1998 anlässlich ihrer ‚Bridges To Babylon‘-Tour. Das Konzert – unter dem Titel „Bridges To Bremen“ – fand am 02. September 1998 im Bremer Weserstadion statt und wurde von den TV-Stationen in ganz Europa und Teilen Afrikas im Fernsehen live übertragen. Das ist einmal an Bildformat 4:3 und -qualität – und vor allem an dem Audio zu hören. Da dieses Konzert wahrscheinlich nicht für eine offizielle Vermarktung als Tonträger durch das Label aufgenommen wurde, wo es eigentlich immer noch eine Post-Produktion mit dem Mastering gibt, sondern nur direkt versendet wurde, haben die Tontechniker das Signal fleißig durch einige Kompressoren geschickt. Außerdem befinden sich so ziemlich in allen Titeln übersteuerte Stellen.

Leider hatte Apple im Jahr 2013 die Podcast-Funktion mit Erscheinen von GarageBand in Version 10 wieder entfernt und damit mir die Möglichkeit von Kapitelmarken in AAC-encodierten m4a-Dateien genommen.

Links:

Individuelles ISO-Image unter macOS erstellen

Im Zuge meines Vorhabens dass ich mir nach langer Zeit wieder ein MS-DOS virtualisiert habe, stand ich auch wieder vor dem Problem ein individuelles ISO-CD-Image mit Computerdateien unter macOS zu erstellen. Im graphischen Programm ‚Disk Utility‘ (dt.: Festplattendienstprogramm) ist dies leider nicht direkt möglich. Allerdings muss im ‚Disk Utility‘ über das Menü ‚File‚ -> ‚New Image‚ -> ‚Blank Image …‚ ein leeres Image erstellt werden. Dabei ist darauf zu achten, dass im Dialogfenster unter ‚Partitions‘ ‚CD/DVD‘ und bei ‚Image Format‘ ‚DVD/CD-Master‘ als Optionen ausgewählt sind.

Somit ist erst einmal ein Image mit der Dateierweiterung .cdr erstellt, das mit Dateien gefüllt werden kann. Um daraus nun ein CD-ROM-konformes ISO-Image zu erstellen, ist das Kommandozeilenprogramm hdiutil nötig.

Der Befehl lautet:

hdiutil makehybrid -iso -o CD-ROM.ISO CD-ROM.cdr

Bei der Benennung der Output-Datei ist es aber nicht nötig .ISO als Dateierweiterung an zu hängen, da hdiutil dies automatisch tut.

Links:
Einrichten eines virtualisierten MS-DOS Systems (eigener Blogartikel)
ISO 9660 (dt. Wikipedia)

Kurzeinstieg zum ed-Editor

Nachdem ich vor ungefähr 11 bis 12 Jahren begann, mich mit der Bedienung des Texteditors vi für BSD-Unix und Linux anzufreunden, ist dieser auf einer Shell inzwischen auch für mich der Texteditor erster Wahl. Im Kontext einer Linux User Group hatte ich bereits damals mitbekommen, dass dieser Texteditor – sowie dessen weiterentwickelter Nachfolger vim – bei durchaus langjährigen Linux-Anwendern beziehungsweise -Administartoren sehr geschätzt wird, während Neulinge durch das ungewohnte Bedienungskonzept eher erst einmal irritiert und verschreckt reagieren und ihn dann mit Unverständnis begegnen.
Es ist durchaus interessant zu wissen, dass der vi zu einer Zeit entwickelt wurde, in der Computererminals mit einer Tastatur ausgestattet waren, die im Umfang an verfügbaren Tasten noch Schreibmachinen glichen und es eben noch keine Cursor-Tasten gab, um im Text zeilen- und spaltenweise den Cursor zu navigieren. Er arbeitet stattdessen kontextbasiert. Mit einem Befehlsmodus, einem Einfügemodus, bei dem der Text direkt bearbeitet werden kann, sowie dem Kommandozeilenmodus.

Zur Zeit beschäftige ich mich zunehmend mal mit Unix-Versionen, die inzwischen einen historischen Status genießen. Bei diesen ist zum einen vermutlich aus Speicherplatzgründen des Installationsmediums, und in einem anderen Fall auf Grund des enormen Alters der Unix-Version, kein vi vorhanden und stattdessen als einziger Texteditor der ed verfügbar.

Bei dem ed handelt es sich auch wie beim vi um einen kontextbasierten Texteditor. Allerdings arbeitet Dieser nicht Seitenbasiert mit den Text-Dateien, sondern nur zeilenorientiert. Das liegt daran, dass er natürlich älter als der vi ist, und zu einer Zeit Anfang der 1970er Jahre von Ken Thompson mit Unix mit entwickelt wurde, als die Programmierer die Computer noch mit einem Fernschreiber als Ein- und Ausgabegerät bedienten und noch keine elektrischen Bildschirmterminals zur Verfügung standen, die Dateien seitenweise ausgeben konnten.

Vor vielen Jahren bin ich dann beim Durchstöbern des Internets auf eine ISO-Datei gestoßen, die für einen normalen PC bootfähig ist und einen etwa 10 Megabyte großen Emulator zur Ausführung des ‚Unix Time-Sharing System Seventh Edition (V7)‘ vom Januar 1979 beinhaltet. Bei dem Emulator habe ich dann damals recht schnell wieder das Handtuch geworfen, weil ich trotz meiner bereits bestenenden Erfahrung hinsichtlich der Bedienung des vi’s zusätzlich nur mit der zeilenweisen Ausgabe einer Textdatei nicht zurecht kam.

Vor ein paar Tagen habe ich schließlich noch einmal einen Versuch erfolgreich gestartet und mich mit den wichtigsten Befehlen – beziehungsweise dessen Kommandozeilenmodus vertraut gemacht. Als Einstieg hat mir dabei auch der Beitrag „Eine Anleitung für Anfänger zur Verwendung des ed Editor unter Linux“ des Blog’s HowtoForge geholfen.

Die wichtigsten Kommandos und Befehle habe ich mir auch noch einmal zusätzlich in eine eigen kleine Tabelle ins Wiki gestellt.
Link: – Kurzübersicht ed Editorkommandos (eigenes Wiki)

Weitere Links:
Ersterfahrungen mit NetBSD (Blog-Artikel vom 25. Oktober 2008)
Texteditor vi (dt. Wikipedia)
Texteditor vim (dt. Wikipedia)
Texteditor ed (dt. Wikipedia)
Eine Anleitung für Anfänger zur Verwendung des ed Editor unter Linux (HowtoForge)