<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/bwurst.org/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    
    <link href="http://www.bwurst.org/feeds/atom.xml" rel="self" title="Bernds Blog" type="application/atom+xml" />
    <link href="http://www.bwurst.org/"                        rel="alternate"    title="Bernds Blog" type="text/html" />
    <link href="http://www.bwurst.org/rss.php?version=2.0"     rel="alternate"    title="Bernds Blog" type="application/rss+xml" />
    <title type="html">Bernds Blog</title>
    <subtitle type="html"></subtitle>
    <icon>http://www.bwurst.org/templates/bwurst.org/img/s9y_banner_small.png</icon>
    <id>http://www.bwurst.org/</id>
    <updated>2010-08-17T07:53:29Z</updated>
    <generator uri="http://www.s9y.org/" version="1.6-alpha2">Serendipity 1.6-alpha2 - http://www.s9y.org/</generator>
    <dc:language>de</dc:language>

    <entry>
        <link href="http://www.bwurst.org/archives/202-Kurztipp-Einzelne-Partition-aus-einem-HDD-Image-mounten.html" rel="alternate" title="Kurztipp: Einzelne Partition aus einem HDD-Image mounten" />
        <author>
            <name>Bernd</name>
                    </author>
    
        <published>2010-08-16T08:40:44Z</published>
        <updated>2010-08-17T07:53:29Z</updated>
        <wfw:comment>http://www.bwurst.org/wfwcomment.php?cid=202</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://www.bwurst.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=202</wfw:commentRss>
    
            <category scheme="http://www.bwurst.org/categories/14-Success-Stories" label="Success-Stories" term="Success-Stories" />
    
        <id>http://www.bwurst.org/archives/202-guid.html</id>
        <title type="html">Kurztipp: Einzelne Partition aus einem HDD-Image mounten</title>
        <content type="xhtml" xml:base="http://www.bwurst.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Ich musste neulich einen Rechner vollständig neu installieren und haben daher vorab neben einer Sicherung der Dateien ein HDD-Image erstellt um für den Fall der Fälle alles nochmal verfügbar zu haben.<br />
<br />
Danach, wie es eben so ist, stellte ich Inkonsistenzen der kopierten Dateien fest und wollte auf dem gemachten Image nochmal nachschauen und die Dateien von dort nochmal kopieren. Leider war ich nicht schlau genug, einzelne Partitions-Images der stark partitionierten Festplatte zu machen sondern habe nur ein komplett-Image, das sich so natürlich nicht als Loopback mounten lässt.<br />
<br />
Doch nach kurzer Recherche fand ich heraus, dass das gar kein Problem ist. Man muss nur mittels <strong>fdisk -l sda.img</strong> die Start-Sektor-Nummer der gewünschten Partition bestimmen, diese <strong>mit 512 multiplizieren</strong> und hat dann die Startposition der Partition in Bytes.<br />
<br />
Mit dem Befehl<br />
<code>mount -o loop,<strong>offset=<em>12345678</em></strong> sda.img /mnt/image</code><br />
lässt sich dann das Dateisystem dieser Partition direkt mounten.<br />
<br />
Vermutlich ist das mal wieder eine meiner Wissenslücken, die man eigentlich nach so langer Erfahrung nicht mehr haben sollte, aber das hatte ich bis gerade eben wirklich nicht gewusst (weil nie gebraucht). :) 
            </div>
        </content>
        <dc:subject>anleitung</dc:subject>
<dc:subject>arbeit</dc:subject>
<dc:subject>computer</dc:subject>
<dc:subject>erfahrung</dc:subject>
<dc:subject>kurztipp</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>lösung</dc:subject>
<dc:subject>migration</dc:subject>
<dc:subject>success story</dc:subject>

    </entry>
    <entry>
        <link href="http://www.bwurst.org/archives/201-Tool-der-Woche-pv-pipe-viewer.html" rel="alternate" title="Tool der Woche: pv (»pipe viewer«)" />
        <author>
            <name>Bernd</name>
                    </author>
    
        <published>2010-05-07T08:10:38Z</published>
        <updated>2010-05-07T08:37:20Z</updated>
        <wfw:comment>http://www.bwurst.org/wfwcomment.php?cid=201</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://www.bwurst.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=201</wfw:commentRss>
    
            <category scheme="http://www.bwurst.org/categories/14-Success-Stories" label="Success-Stories" term="Success-Stories" />
    
        <id>http://www.bwurst.org/archives/201-guid.html</id>
        <title type="html">Tool der Woche: pv (»pipe viewer«)</title>
        <content type="xhtml" xml:base="http://www.bwurst.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Bedingt durch <a href="http://www.ubuntu.com/">das neueste Ubuntu-Release</a> vor gut einer Woche musste ich in den letzten Tagen ein paar Rechner aktualisieren. Dazu empfiehlt sich natürlich vorher ein möglichst gutes Backup.<br />
<br />
In einem Fall musste ich einen Rechner komplett sichern, den ich nachher 1:1 wieder herstellen möchte (auf ähnlicher aber anderer Hardware). Damit das Restore nachher möglichst schnell und einfach funktioniert, entschied ich mich dazu, dass ich /dev/sda als Komplettimage sichern möchte. Leider habe ich keinen Rechner, auf dem ausreichend Platz für das komplette Image ist. Die Festplatte ist aber nur zu einem kleinen Teil wirklich belegt. Die Erwartung war also, wenn ich das Image sofort komprimiert abspeichere, dann müsste es auf jeden Fall passen, denn leerer Platz sollte gut komprimierbar sein.<br />
<br />
Der Transfer sollte über eine netcat-Pipe laufen (ssh-tunnel wäre auch möglich, hat aber mehr overhead).<br />
<br />
Das Problem an der Sache war, dass ich keine Informationen über den laufenden Fortschritt der Aktion sehen konnte. Auf dem Quellrechner kann man nicht sehen, wie viel von dem Device schon ausgelesen ist und auf dem Zielhost habe ich keine Ahnung, wie groß die endgültige komprimierte Datei werden würde.<br />
<br />
Ein kurzes Überlegen brachte mich zu der Idee, dass es eigentlich eine triviale Aufgabe sei, ein Programm zu erstellen, das einfach Daten auf stdin liest, nach stdout schreibt und dabei mitzählt und die Zahl regelmäßig ausgibt.<br />
<br />
Bevor ich selbst Hand anlegte, suchte ich kurz im Netz und fand auch recht schnell eine Lösung: <strong>pv</strong>, steht für »pipe viewer« und macht exakt genau dieses. Das Tool kann entweder einfach mitzählen oder man gibt ihm per Parameter die erwartete Gesamtgröße der Daten, dann erhält man eine wget-ähnliche Ausgabe mit Restzeit und Prozentbalken.<br />
<br />
Das Tool gefällt mir so gut, dass ich es sogleich für diverse andere Aktionen ebenfalls einsetze.<br />
Dies kann dann etwa so aussehen (bei einer tar-Pipe über netcat):<br />
<pre>$ nc -l 10.0.0.2 1111 |gunzip| pv -s 40053354750| tar x<br />
14,6GB 0:53:34 [ 5,2MB/s] [=========>                    ] 39% ETA 1:22:55</pre>In diesem Beispiel habe ich auch gleich das gunzip <em>vor</em> pv gesetzt, damit ich die wirklichen Daten zähle und nicht die komprimierten. Auf dem Quellhost arbeitet hier ein einfacheres <em>tar xz . | nc ...</em>.<br />
<br />
Ach ja, Fußnote: Für das eingangs genannte Szenario sollte man das gute alte gzip benutzen. Da ich möglichst gut komprimierte Daten wollte (schließlich hatte ich wenig Platz), entschied ich mich für xz als Kompressionsprogramm. Das ist aber so dermaßen langsam, dass es auch auf meinem DualCore-Rechner nur etwa 1 MB pro Sekunde komprimierten konnte und damit den ganzen Vorgang auf viele Stunden ausgedehnt hat. Leeren Platz komprimieren hätte aber auch gzip hin bekommen. 
            </div>
        </content>
        <dc:subject>computer</dc:subject>
<dc:subject>erfahrung</dc:subject>
<dc:subject>kubuntu</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>lösung</dc:subject>
<dc:subject>netzwerk</dc:subject>
<dc:subject>open source</dc:subject>
<dc:subject>problemlösung</dc:subject>
<dc:subject>success story</dc:subject>
<dc:subject>ubuntu</dc:subject>

    </entry>

</feed>