Sicherung/Cloning der Festplatte

Aus OE-Alliance Support Wiki
Wechseln zu: Navigation, Suche

Ziel

  • Du möchtest den Inhalt deiner Haupt-Festplatte auf eine externe Festplatte übertragen oder umgekehrt, denn
    • du möchtest deine zu klein gewordene interne Festplatte auf eine größere upgraden, deshalb willst du deine die alte volle ausbauen, die neue leere einbauen, und dann den Inhalt der alten auf die neue übertragen, oder
    • du möchtest deine interne Festplatte für ein anderes Dateisystem formatieren, wegen Dateisystem-Performance-Problemen oder -Verbesserungen; dazu möchtest du den Inhalt auf eine temporäre externe Backup-Platte übertragen, die interne umformatieren, und dann die Daten zurückübertragen, oder
    • du möchtest einfach nur eine externe Platte als Backup oder als Spiegelung zur internen Platte haben, z.B. damit du deine Videothek auswärts immer dabei haben kannst, oder als Backup gegen Datenverlust.

Problem

  • Du hast nicht die Zeit, um die Langsamkeit von LAN oder WLAN mitsamt derer Netzwerkprotokoll-Overheads in Kauf zu nehmen, daher kommt für dich zeitlich nur eine Anbindung der externen Platte an den eSata-Port (oder als zweite Wahl der langsamere USB-Port, falls eSATA nicht verfügbar) in Frage.
  • Aufgrund der aktuellen Festplattengrößen ist ein Backup "am Stück" über eine zweistellige Zahl von Stunden für dich unzumutbar; und es wäre eine große zeitliche Entlastung, wenn du den Kopier-Job in Etappen aufteilen kannst (so dass es z.B. während wichtiger Aufnahmen jederzeit unterbrochen werden kann, um jederzeit später dann weiterzumachen).
  • Es ist für dich unzumutbar, wenn der Laptop dauerhaft in den Kopierjob eingebunden ist, und damit über Stunden fest an die Box gebunden ist. Stattdessen soll die Box das Backup ganz autonom fertig machen können.

Lösung

  • In Linux ist das Kopier-Tool für hohen Festplattendurchsatz das Kommandozeilen-Tool 'cp' "Copy", das wie alle anderen Kommandozeilentools über ein Terminalfenster (in Windows 'telnet') erreichbar ist. Andere Tools haben Performance-Schwächen für Festplatten-Datentransfers, da sie entweder ursprünglich eher für Netzwerkübertragungen entwickelt wurden (wie 'rsync'), und/oder sie sind entwicklungsgeschichtlich sehr alt und wurden nie für neuere, schnellere Übertragungs-Schnittstellen wie SATA nach-entwickelt/nach-optimiert (z.B. 'mc' "Midnight Commander"), obwohl es SATA schon seit 12 Jahren gibt.
    • mc bringt z.B. nur 7 MB/sek (braucht 38 Stunden pro 1 TB)
    • rsync bringt z.B. nur 10,2 MB/Sek (braucht 26 Stunden pro 1 TB)
    • cp bringt z.B. 37,2 MB/Sek (braucht 7 Stunden pro 1 TB) (jeweils ermittelt mit zwei Samsung EcoGreen F4 im Idealszenario: beide an SATA angeschlossen, eine als interne und die andere als externe) (andere Anschluss-Kombinationen sind ggf. erheblich langsamer, deshalb am besten das Idealszenario wenigstens temporär herstellen, wenn möglich; beim Kauf von externen Platten oder -Gehäusen möglichst solche bevorzugen, die neben USB auch einen eSATA-Eingang haben).
  • Auf der ET9x00 ist leider nicht das vollwertige Linux-'cp' verfügbar (mit all denen Parameter-Optionen, wie in "Manpage"-Dokumentationsseiten ersichtlich), sondern aus Speicherplatzspar-Gründen nur eine "Light"-Version (bereitgestellt von Busybox, einer Sammlung solcher Light-Versionen von Kommandozeilentools) mit deutlich weniger Parametern. Sofern du sehr wahrscheinlich die Kopieraufgabe in Etappen aufteilen können möchtest, brauchst du eine Option, bei dem bei einer nächsten Etappe nicht wieder ganz von vorne angefangen wird, bereits kopierte Dateien also nicht noch einmal kopiert werden. Dafür sorgt der Parameter -n, der im Box-Standard-'cp' jedoch nicht verfügbar ist. Dazu musst du das komplette, originale 'cp' bei dir nachinstallieren.
  • Folgende drei Packages müssen heruntergeladen werden. Es sind Archive mit dem Namen <Paketname><Version>_mipsel.deb. Du entpackst sie zweimal mit z.B. 7zip (erst in ein .tar-Archiv, dann dieses .tar-Archiv in eine Verzeichnisstruktur), und kopierst die weiter unten genannten Dateien z.B. über den Windows-Explorer (sofern via Samba mit der Box verbunden) einfach in genau das Unterverzeichnis der Box, in dem die Dateien auch im Archiv abgelegt waren (bzw. jetzt in deiner entpackten Verzeichnisstruktur liegen). Die Datei-Attribute stimmen automatisch.
    • Core-Utils: packages.debian.org/squeeze/coreutils > Download coreutils: mipsel > packages.debian.org/squeeze/mipsel/coreutils/download; Kopiere nur die Datei /bin/cp, z.B. unter neuem Namen als /bin/cp2, damit das originale 'cp' für alle Fälle erhalten bleibt.
    • libacl1-Paket ("Access control list shared library"): packages.debian.org/squeeze/mipsel/libacl1/download. Du brauchst nur die Datei 'libacl.so.1'.
    • libselinux1-Paket "SELinux runtime shared libraries": packages.debian.org/squeeze/mipsel/libselinux1/download. Du brauchst nur die Datei libacl.so.1.1.0, die benennst du im Ziel dann um in libacl.so.1 (weil 'cp2' danach sucht).
    • Denke daran, dass du nach einem Neu-Flash die drei Schritte wiederholen müssen wirst. Wenn du oft 'cp2' nutzt und auch oft neuflashst, kannst du erwägen, diese drei Dateien in dein Einstellungen-Backup mit aufzunehmen.
  • 'cp2' ist sofort funktionell (ohne Reboot). Der Aufruf ist z.B. 'cp2 -anv /media/hdd/* /media/sdb1/'.
    • Deine externe Platte ist als /media/sdb1 ansprechbar, wenn sie beim Booten bereits lief. Andernfalls musst du sie mounten. Wenn du nicht weißt, was das ist, einfach die Box selber mounten lassen, durch einen Reboot.
    • Bist du nicht sicher, ob die externe Platte auch bei dir "sdb1" ist? Dann gib "fdisk -l" an. "-l" ist ein kleines L (für "liste") und kein großes i. Es zeigt dir, welche Speichermedien die Box gerade sieht, und wie sie für die Box heißen.
    • Die Parameter -anv sind äquivalent zu -a -n -v und bedeuten:
      • -a "Archivierung" erhält die Eigenschaften der Datei (Änderungsdatum, Attribute, Owner...) und geht durch Unterverzeichnisse.
      • -n sorgt dafür, dass bereits kopierte Dateien nicht noch einmal kopiert werden.
      • -v "verbalisiere" gibt in das Terminalfenster die gerade aktuell am kopierende Datei aus.
    • Wenn du den Kopiervorgang mit der Tastenkombination <Strg>-C unterbrichst (z.B. weil du die Box für eine wichtige Aufnahme brauchst), wird die gerade am kopierende, noch unfertige Zieldatei jedoch nicht gelöscht (das Verhalten ist also anders als beim Windows-Explorer oder bei 'rsync', die halbfertige Dateien automatisch löschen). Deshalb solltest du diese letzte, unfertige Datei am Ende einer Kopier-Etappe manuell löschen. Solche unfertigen Dateien sind aber auch ohne die Terminal-Ausgabe leicht zu finden, denn nur sie haben das Änderungsdatum von "gerade eben".
    • Wenn du das Kopieren nicht unterbrechen willst, aber den Laptop abnabeln musst oder schlafenlegen willst, kannst du mit der Tastenkombination <Strg>-Z die Terminal-Ausgabe abschalten (das Kopieren läuft im Hintergrund trotzdem weiter). Dann gibst du das Kommando 'bg' (="background") ein, dadurch wird das Programm ganz vom Terminal abgekoppelt, läuft aber weiter. Dann kannst du das Terminal schließen und z.B. den Laptop von der Box abnabeln oder schlafenlegen.
    • Später kannst du dich leider nicht wieder mit einem neu geöffneten Terminal-Fenster an die Ausgaben des noch laufenden Kopierporgrammes andocken. Wenn du unbedingt die Ausgabe wieder sehen möchtest, bleibt dir nichts anderes übrig, als den Kopier-Prozess abzubrechen, die letzte nur halbfertige Datei zu löschen, und dann wieder den Kopiervorgang zu starten. Einen im Hintergrund laufenden Prozess brichst du am einfachsten mit einem Reboot ab, am schnellsten mit "pidof cp2" (liefert eine <Zahl>, die den Prozess repräsentiert) und dann "kill <Zahl>".