Re: nützliche Befehle

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

From: Raphael H. Becker (beckerra_at_rumms.uni-mannheim.de)
Date: 13. Sep 2001


Matthias Dumke wrote:
> Dateien und Unterverzeichnissen zu kopieren.
> Gibt es einen solchen Befehl?

neben cp -a (oder sowas ... dem habe ich irgendwie nie vertraut) habe
ich irgendwann mal den Ansatz gesehen, den ich plausibel und
nachvollziehbar fand (glaube SuSE Handbuch):

im Verzeichnis "source":
tar cf - . | {cd /path/to/target/; tar xvf - ;}

In Worten:
Archiviere ("tar c") das aktuelle Verzeichnis (".") und schreibe auf die
Standardausgabe ("f -"), uebergebe diese ("|") an die Befehlskette {
...; }, die ihrerseits dafuer sorgt, dass ins Zielverzeichnis gesprungen
wird ("cd ...") und dort das Archiv von der Standardeingabe ("f -")
wieder ausgepackt ("tar x") wird, dabei noch die ausgepackten files
anzeigt ("v").

Man koennte auch die eingepackten Files anzeigen lassen, dazu muesste
man dem ersten tar-Befehl zusaetzlich noch ein "v" unterschieben.

Das ganze funktioniert auf einer modernen Shell[1] in einem modernen
Betriebssystem uebrigens ohne, dass Daten zwischengespeichert werden
muessen, d.h. man kann so auch mal 100GB uebetragen und vor allem laufen
beide tar-Befehle GLEICHZEITIG!

Das ist zugegebenermassen keine sehr einfache Art und Weise, dafuer aber
vielfaeltig und vollstaendig nach eigenen Wuenschen anpassbar ...

Lange Zeit spaeter habe ich mal rausgefunden, dass man in jede pipe (das
"|") auch ein ssh-Befehl einbauen kann, der remote einen anderen Befehl
ausfuehrt und diesem stdin uebergibt; kopieren eines Verzeichnisses von
tower1 ueber das Netzwerk auf tower2 in ein Unterverzeichnis sieht
demnach so aus:

Auf "tower1" in verzeichnis "source"
tar cf - . | ssh -l remoteuser tower2 "cd /path/to/target/; tar xvf -"

... zB fuer eine Spiegelung uebers Netz auf einen entfernten rechner,
wenn man keine Lust hat sich mit Spiegel-tools zu beschaeftigen.

Mein Ansatz war vorher uebrigens gewesen, das Verzeichnis per NFS
woanders zu mounten und dann cp -a ... aber das war irgendwann sehr
zeitraubend und irgendwie ist dann so ein eingetippter Befehl schneller
gemacht ... oder wenn die Zielmaschine gar kein NFS kann oder mag. FTP
ist da ebenfalls nur eingeschraenkt zu empfehlen.

Nicht jede Loesung ist zwangslaeufig einfach, in diesem Fall ist sie
besonders flexibel und somit "schoen", wie ich finde.

Ich hoffe, dass der ein oder andere nachvollziehen, _wieso_ das schoen
ist und vielleicht (hoffentlich, denn das ist Zweck der Mailingliste)
hats der eine oder andere mal ausprobiert und verstanden.

Schoenen Gruss
Raphael "predigt lieber die Konsole" Becker
[1] PS: Ich sage nur "bsh" ... nein, bitte nicht ausprobieren, sowas
will man heute nicht mehr haben und wollte sowas wohl seit den ersten
timesharing-Systemen nicht mehr haben (gleichzeitig statt nacheinander).
Wer de.comp.os.unix.shell in der letzten Zeit verfolgt hat, dem wird das
evtl bekannt vorkommen.

PPS: Ich moechte die schweigende Mehrheit der Anfaenger uebrigens dazu
ermuntern, aehnliche Fragen auf der Liste zu stellen, vielleicht jeweils
unter einem aussagekraeftigen Betreff, etwa "Verzeichnisse kopieren".
Ich werde mir, sofern die Fragen sinnvoll sind, die Zeit nehmen, solche
Fragen zu beantworten, dabei etwas die Hintergruende auszuleuchten,
soweit mir das sinnvoll erscheint.

-- 
t(){ while [ -n "$1" ];do T=/tmp/$$.html;lynx -source "http://dict.leo.\
org/?search=$1"|grep search\ result >$T&&w3m -dump $T;rm $T;shift;done;}
[ -n "$1" ]&&t "$@"||while read -ep dict2\> W;do t $W|more; done #by rhb
# http://rhb.swm.uni-mannheim.de/scripts/dict2


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET