7.5. Wie kann ich einen kompletten Verzeichnisbaum auf eine andere Partition kopieren?

Keywords: Partition | kopieren | tar

7.5.1

Das Umkopieren von kompletten Verzeichnissen (z. B. /home oder /var) ist etwas, zu dem diverse Möglichkeiten im Umlauf sind. Allerdings sind viele dieser Varianten nur eingeschränkt geeignet.

Hier die einzig zuverlässige Methode, um einen kompletten Verzeichnisbaum umzukopieren:

cd /OLD && tar -cp --atime-preserve -f - .   \
    | ( cd /NEW && tar -xpv --atime-preserve -f - )

In diesem Beispiel wird das Verzeichnis /OLD nach /NEW umkopiert.

Wichtig ist u. a. die Option --atime-preserve - wer schonmal einen (leafnode) Newsspool ohne diese Option umkopiert hat, weiß warum. Diese Option ist GNU tar spezifisch, andere Implementationen bieten evtl. eine analoge Option mit anderem Namen. Der Rest der Optionen ist portabel und sollte mit jedem tar funktionieren.

Das Ganze lässt sich übrigens auch fürs Kopieren auf einen anderen Rechner verwenden. Das folgende Beispiel kopiert das lokale Verzeichnis /OLD auf den Rechner mit der IP 192.168.0.1 ins Verzeichnis /NEW.

cd /OLD && tar -cp --atime-preserve -f - . \
    | ssh 192.168.0.1 "( mkdir -p /NEW ; cd /NEW \
    && tar -xpv --atime-preserve -f - )"

Ausführlichere Informationen zum Umkopieren, auch des kompletten Systems, finden sich in der SUSE Supportdatenbank:

Die in den oben genannten Befehlen verwendeten Optionen weichen etwas von den in der SDB genannten ab. Gründe hierfür:

  • --numeric-owner ist beim lokalen Kopieren überflüssig und kann bei Kopieren über SSH u. U. sogar unerwünscht sein, falls die User-IDs abweichen
  • -S (--sparse) hat in Einzelfällen (laut David Haller) schon zu kaputten Dateien geführt.
(cboltz)