Ankündigung

Einklappen
Keine Ankündigung bisher.

5: Quecksilber zur Konservierung

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 5: Quecksilber zur Konservierung

    5:
    Laut fluchend hämmerte der Nikolaus auf seiner Computerkiste herum und verursachte einen Lärm, der die gesamte Nachbarschaft in Angst und Schrecken versetzte. Es war wieder passiert: die Festplatte hatte seltsame Geräusche von sich gegeben und schließlich ihr Leben ausgehaucht. Sämtliche Pläne für die diesjährigen Geschenke waren gelöscht. Einfach so. Wutschnaubend rief der Nikolaus seinen Kollegen, den Weihnachtsmann, an, ob der noch einige Kopien der Arbeit hätte, doch dieser musste verneinen und enttäuscht legte der Nikolaus auf. Morgen war sein Tag und sämtliche Daten waren weg. Er sah es schon auf sich zu kommen: dieses Jahr würden die Stiefel leer bleiben, wenn er nicht in Windeseile mithilfe von Knecht Ruprecht, den Wichteln die gesamte Arbeit von vorn beginnen würde.
    So rief er seine Belegschaft zusammen und schilderte das Problem. Nach dem Herbeischaffen einer neuen Festplatte setzten sich alle an die Arbeit. Sie schrieben und schrieben, doch dann hielt der Weihnachtsmann inne… Er speicherte das Dokument und kam zu dem Schluss, dass ein solcher GAU nicht wieder vorkommen dürfe.
    Nach einigem Überlegen stieß er auf eine Lösung. Er ließ einen Wichtel eine weitere Festplatte herbei holen und während dieser unterwegs war, lud er sich Mercurial herunter und installierte es sich. Aus dem Portage-Tree heraus ging dies rasend schnell
    Code:
    $ sudo emerge -av dev-util/mercurial
    Nebenan auf dem Debian-Rechner tat er das Gleiche
    Code:
    $ sudo apt-get install mercurial
    und so weiter und so fort.
    Als der Wichtel mit der Festplatte zurück kam, schloss er diese per eSATA an seinen Rechner an, formatierte sie und gab sie im Netzwerk frei.
    Anschließend trommelte er die Arbeiter erneut zusammen für eine kleine Demonstration. Er wechselte in sein Arbeitsverzeichnis und legte ein neues Repository an
    Code:
    $ cd "~/Jahr 2009/Vorbereitungen"
    $ hg init
    Dann fügte er die schon vorhandenen Dateien dem Repository hinzu
    Code:
    $ hg addremove
    Ein anschließendes
    Code:
    $ hg commit -m "Initial commit of Santa Claus data"
    übernahm die neu hinzugefügten Dateien ins Repository.
    Die anderen waren verwirrt. Was sollte das denn jetzt bringen? Doch der Nikolaus erklärte es ihnen. Er mountete dazu die externe Festplatte und wechselte in das Verzeichnis der Platte. Dort legte er dann eine Kopie des Repositorys ab
    Code:
    $ cd /mnt/backupdrive
    $ hg clone "~/Jahr 2009/Vorbereitungen"
    „Dies“, erklärte er, „ist nun ein Backup-Repository.“
    Da die Wichtel immer noch nicht ganz verstanden, worauf er hinaus wollte, legte er ein Shell-Skript an und machte es ausführbar:
    Code:
    $ vim backupdata.sh
    $ chmod +x backupdata.sh
    Der Inhalt lautete
    Code:
    #!/bin/sh
    cd "~/Jahr 2009/Vorbereitungen"
    hg addremove
    hg commit -m "[Automatic backup `date`]"
    cd /mnt/backupdriver
    hg pull
    hg update
    Dieses Skript fügte er dann seiner Crontab hinzu und nun verstanden die Wichtel, worauf er hinaus wollte. Der Nikolaus hatte soeben mit wenigen Zeilen Code eine funktionierende Backuplösung gebastelt.

    Begeistert machten sich die Wichtel an die Arbeit. Fortan sollten keine Daten mehr verloren gehen.


  • #2
    Faszinierend wie ähnlich sich die verteilten Versionskontrollsystem sind, so würde das mit git aussehen:

    Code:
    sudo emerge -av dev-util/git
    Code:
    $ sudo apt-get install git-core

    Code:
    $ cd "~/Jahr 2009/Vorbereitungen"
    $ git init
    Code:
    git add .
    Code:
    git commit -m "Initial commit of Santa Claus data"
    Code:
    $ cd /mnt/backupdrive
    $ git clone "~/Jahr 2009/Vorbereitungen"
    Code:
    $ vim backupdata.sh
    $ chmod +x backupdata.sh
    Code:
    #!/bin/sh
    cd "~/Jahr 2009/Vorbereitungen"
    git add .
    git commit -m "[Automatic backup `date`]"
    cd /mnt/backupdriver
    git pull
    # pull zieht und mergt
    Und so würde das mit bazaar aussehen

    Code:
    sudo emerge -av dev-util/bzr
    Code:
    $ sudo apt-get install bzr

    Code:
    $ cd "~/Jahr 2009/Vorbereitungen"
    $ bzr init
    Code:
    bzr add
    Code:
    bzr commit -m "Initial commit of Santa Claus data"
    Code:
    $ cd /mnt/backupdrive
    $ bzr clone "~/Jahr 2009/Vorbereitungen"
    Code:
    $ vim backupdata.sh
    $ chmod +x backupdata.sh
    Code:
    #!/bin/sh
    cd "~/Jahr 2009/Vorbereitungen"
    bzr add
    bzr commit -m "[Automatic backup `date`]"
    cd /mnt/backupdriver
    bzr pull
    # pull zieht und mergt
    Und die verteilten eignen sich dank guter Kompression auch sehr gut dazu z.b. Datenbank-Backups zu machen:
    Datenbank-Backups mit git (mysql, postgresql, etc)

    Aktueller Stand bei mir (stündliche Backups, unkomprimierte dumps sind aktuell 82 MB groß (komprimiert [tar.bz2]: 27MB) und nach 1799 Commits (~ 75 Tage) ist das ganze Repro gerade mal 980 MB groß.

    Hätte ich also einzelne Archive von den Dumps erstellt wäre ich jetzt bei ~ 1799 * 27 = 48 573 MB ~= 48,5 GB :P
    Und trotzdem hab ich die komplette history im Stundenrhytmus auf die ich zurückgreifen kann
    robo47.net - Blog, Codeschnipsel und mehr
    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

    Kommentar


    • #3
      Ja, verteilte VCS sind schon etwas Tolles.
      hg pull; ht update lässt sich übrigens auch verkürzen zu hg -u pull.

      Wenn schon dieses sonst kein Feedback kommt, kommt wenigstens eine sehr gute Ergänzung. Danke!
      Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

      Kommentar


      • #4
        Meines Wissens sind die .hg-Kommandos an SVN angelehnt, um den Umstieg leicht zu machen

        Hier gibts noch ne allgemeinen Tech Talk zum Thema: http://chaosradio.ccc.de/cre130.html

        2. Anmerkung:

        http://farm4.static.flickr.com/3598/...4c77bc91_o.png

        3. Anmerkung:

        .hg gibts auch für Windows in einer gewohnt guten Tortoise-Variante. Trotz Kontextmenü lohnt es sich auch hier durchaus, auf der Kommandozeile zu arbeiten - bis auf die Pfade (Windows benötigt natürlich Laufwerksangaben) sind die Kommandos identisch.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Kleine Ergänzung: das manuelle Update durch hg update oder den Parameter -u ist bei Mercurial nicht als Dämlichkeit der Entwickler gesehen sondern als Vorsichtsmaßnahme .
          Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

          Kommentar


          • #6
            Zitat von Manko10 Beitrag anzeigen
            Kleine Ergänzung: das manuelle Update durch hg update oder den Parameter -u ist bei Mercurial nicht als Dämlichkeit der Entwickler gesehen sondern als Vorsichtsmaßnahme .
            gibt es imho bei git auch, dort hat man git fetch, was nur externe branches holt, aber nicht mergt
            robo47.net - Blog, Codeschnipsel und mehr
            | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

            Kommentar


            • #7
              genail Wichtel sind Nerds und können Backups erstellen. und der Nikolaus kann Programmieren nun wird die Welt klarer. Irgendwann schreiben die Kinder kein Zettel mehr sondern Mailen den Wunschzettel Verrückte welt

              Apropo Nerd Witze:
              verstehen auch nur Nerds
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

              Kommentar

              Lädt...
              X