Komplette Verzeichnisbäume verschieben

Ich musste mal wieder ein Verzeichnis von der einen Partition auf eine andere schieben um Platz zu schaffen. Wichtig dabei ist, dass die Rechte der Dateien und Verzeichnisse nicht verändert und Sym-Links korrekt kopiert werden. Dazu kann man sehr gut den tar-Befehl nutzen.

Nehmen wir mal an, wir wollen das komplette Verzeichnis foobar unterhalb von /var nach /usr kopieren, so dass es hinterher als /usr/foobar zu finden ist.
Man wechselt dazu als root in das übergeordnete Verzeichnis der Quelle (hier also nach /var) und gibt den folgenden Befehl ein:

tar cSpf - foobar | ( cd /usr && tar xSpvf - )

Wie man sieht, wird hinter den „cd“ das Zielverzeichnis angegeben.
Der Linke Teil packt das Verzeichnis foobar in einen tar-Stream und gibt ihn auf der Standardausgabe aus (dafür sorgt das – hinter dem f ). Die Parameter S und p sorgen dafür, dass die Rechte unverändert bleiben (p) und dass leere bzw. kleine Dateien effizient übertragen werden (S). Dieser Stream wird dann mit der Pipe (|) an den rechten Teil weitergereicht. Hier wird dann erstmal in das Zielverzeichnis gewechselt und der über die Standardeingabe (wieder f – ) empfangene Stream dort ausgepackt.

Anschließend kann das Quelleverzeichnis gelöscht werden.

Wie das ganze auch über Rechnergrenzen mittels ssh funktioniert zeige ich in einem weiteren Artikel.

Ein Gedanke zu „Komplette Verzeichnisbäume verschieben

  1. Pingback: Verzeichnisse auf einen anderen Rechner übertragen « romeofox blog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.