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.