Hallo Liste. Ich habe auf einem entfernten Rechner auf folgende Weise eine Datei angelegt: dd if=/dev/hda | ssh user@server "cat >> /datei" Wie kann ich denn jetzt diese Datei so auslesen, daß ich sie einem Prozeß lokal auf stdin leiten kann? Ich brauche also irgendwas wie cat user@server:/datei | dd - of=/dev/hda Aber das geht so natürlich nicht. Es fällt mir auch kein rechter Weg ein, wie ich die Kanele umgekehrt verbinden kann. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo
Ich habe auf einem entfernten Rechner auf folgende Weise eine Datei angelegt:
dd if=/dev/hda | ssh user@server "cat >> /datei"
Wie kann ich denn jetzt diese Datei so auslesen, daß ich sie einem Prozeß lokal auf stdin leiten kann? Ich brauche also irgendwas wie
cat user@server:/datei | dd - of=/dev/hda
Aber das geht so natürlich nicht. Es fällt mir auch kein rechter Weg ein, wie ich die Kanele umgekehrt verbinden kann.
warum nicht einfach: ssh user@server cat /datei | dd - of=/dev/hda es gibt aber auch noch netcat. Hab's aber noch nie benutzt. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer, Donnerstag, 8. Juni 2006 21:37:
ssh user@server cat /datei | dd - of=/dev/hda
Ach... so einfach. Ich hätte gedacht, daß in diesem Fall stdout von cat irgendwo auf dem entfernten Rechner "herauskommt". Nun denn, wieder was gelernt. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo, Am Don, 08 Jun 2006, Andre Tann schrieb:
Dr. Jürgen Vollmer, Donnerstag, 8. Juni 2006 21:37:
ssh user@server cat /datei | dd - of=/dev/hda
ssh user@server "cat /datei" | dd of=/dev/hda Allerdings war deine (Andre's) Beschreibung beim ersten Lesen irrefuehrend (du willst "stdin"? Hast du doch schon! ;)
Ach... so einfach. Ich hätte gedacht, daß in diesem Fall stdout von cat irgendwo auf dem entfernten Rechner "herauskommt". Nun denn, wieder was gelernt.
RTFFAQ *eg*: 6.5. Wie kann ich einen kompletten Verzeichnisbaum auf eine andere Partition kopieren? http://suse-linux-faq.koehntopp.de/q/q-filesystems-kopieren.html Wenn du dir das dort dokumentierte Beispiel genauer anschaust: cd /OLD && tar -cp --atime-preserve -f - . \ | ssh 192.168.0.1 "( mkdir -p /NEW ; cd /NEW \ && tar -xpv --atime-preserve -f - )" sollte dir was auffallen, vor allem, wenn du diesen Befehl mit dem ohne ssh weiter oben vergleichst... Zum Abhaken zum Verstehen: * was GENAU macht das ssh? * was GENAU macht das einpackende tar (wohin schreibt es das Archiv)? * was GENAU macht das auspackende tar (woher liest es das Archiv)? Und hier noch die Umkehrung: ssh root@192.168.0.2 \ "( cd /NEW && tar -cp --atime-preserve -f - . ; )" \ | ( cd /OLD && tar -xpv --atime-preserve -f - ; ) oder so... Gleiche Fragen wie oben ;) Das Prinzip sollte dann klar werden ;) Und das laesst sich dann analog auf 'dd', 'cat' und sonstwas anwenden. netcat ist prinzipiell auch ne Variante, IMHO aber (in so einem Fall) schwieriger anzuwenden, denn "remote" muss ja auch was lesen / schreiben und das muss man dann ja auch irgendwie starten... HTH & HAND, -dnh -- 31: Multimedia-Multitasking CD-ROM mit Kopfhöreranschluß. (VOBIS Denkzettel) -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Servus David, danke für Deine Beschreibung. David Haller, Freitag, 9. Juni 2006 04:47:
* was GENAU macht das ssh?
Hier würde ich sagen: ssh stellt die Verbindung zwischen dem lokalen und dem entfernten Rechner her, und leitet stdout des lokalen tar auf das stdin des entfernten tar. Richtig?
* was GENAU macht das einpackende tar (wohin schreibt es das Archiv)?
Es schreibt auf sein stdout, wegen des einsamen - .
* was GENAU macht das auspackende tar (woher liest es das Archiv)?
Es liest aus stdin, ebenfalls wegen des - , und schreibt wegen des x und des f die Dateien als solche. Jetzt hätte ich aber noch eine Frage: Du schriebst (bzw. zitiertest):
Unix: Alles ist ein File, und was kein File ist, hat sich gefaelligst als ein solches zu tarnen.
Angenommen, ich möchte eine Partition auslesen. Wieso muß ich dd if=/dev/hda of=/datei schreiben, und nicht einfach cat /dev/hda > /datei ? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Andre Tann schrieb:
Jetzt hätte ich aber noch eine Frage: Du schriebst (bzw. zitiertest):
Unix: Alles ist ein File, und was kein File ist, hat sich gefaelligst als ein solches zu tarnen.
Angenommen, ich möchte eine Partition auslesen. Wieso muß ich
dd if=/dev/hda of=/datei
schreiben, und nicht einfach
cat /dev/hda > /datei
Das funktioniert durchaus: $ cat /dev/hda5 >/data/xxx $ dd if=/dev/hda5 of=/data/yyy 15+1 Datensätze ein 15+1 Datensätze aus 1612122624 bytes (1,6 GB) copied, 72,2448 seconds, 22,3 MB/s $ file /data/??? /data/xxx: Linux/i386 swap file (new style) 1 (4K pages) size 393583 pages /data/yyy: Linux/i386 swap file (new style) 1 (4K pages) size 393583 pages $ cmp /data/xxx /data/yyy $ dd bringt halt noch ein paar mehr Möglichkeiten mit. -- Viele Grüße ------------------------------------------------------------------------ Michael Behrens -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo, Am Fre, 09 Jun 2006, Andre Tann schrieb:
David Haller, Freitag, 9. Juni 2006 04:47:
* was GENAU macht das ssh?
Hier würde ich sagen: ssh stellt die Verbindung zwischen dem lokalen und dem entfernten Rechner her, und leitet stdout des lokalen tar auf das stdin des entfernten tar. Richtig?
Jep. Entscheidend hier also ist das Verbinden des stdout|stdin via Netz. Die Pipe wird praktisch durchs Netz "verlaengert" ;)
* was GENAU macht das einpackende tar (wohin schreibt es das Archiv)?
Es schreibt auf sein stdout, wegen des einsamen - .
* was GENAU macht das auspackende tar (woher liest es das Archiv)?
Es liest aus stdin, ebenfalls wegen des - , und schreibt wegen des x und des f die Dateien als solche.
Nein. Hinter -f wird der Dateiname, in den zu Schreiben bzw. aus dem zu Lesen ist, angegeben. Ich habe bei diesen Befehlen mit Absicht die portable Syntax, die auch !GNU tar Versionen koenne gewaehlt. tar -c -f - -p /was/eingepackt/werden/soll ^^^^ GNU tar hat zumindest auf Linux den Default "stdout" bzw. "stdin" als Archivnamen, ABER: ==== info (tar)file ==== For example, in this `tar' command, $ tar -cvf collection.tar blues folk jazz `collection.tar' is the name of the archive. It must directly follow the `-f' option, since whatever directly follows `-f' *will* end up naming the archive. If you neglect to specify an archive name, you may end up overwriting a file in the working directory with the archive you create since `tar' will use this file's name for the archive name. ==== Bei aktuellen GNU tar gilt dies AFAIR nicht mehr. Da wird AFAIR das erste Argument als "archive name" genommen. ==== If you do not name the archive, `tar' uses the value of the environment variable `TAPE' as the file name for the archive. If that is not available, `tar' uses a default, compiled-in archive name, usually that for tape unit zero (ie. `/dev/tu00'). `tar' always needs an archive name. ==== Anderswo, z.B. unter BSD oder wenn der Admin z.B. TAPE definiert oder tar anders kompiliert hat kann der Default abweichen. Ansonsten und in der Wirkung hast du's aber richtig gelesen :)
Jetzt hätte ich aber noch eine Frage: Du schriebst (bzw. zitiertest):
Unix: Alles ist ein File, und was kein File ist, hat sich gefaelligst als ein solches zu tarnen.
Angenommen, ich möchte eine Partition auslesen. Wieso muß ich dd if=/dev/hda of=/datei schreiben, und nicht einfach cat /dev/hda > /datei
Das hat Michael schon gut beantwortet :) -dnh -- "Lege die eine Hand in die Gefriertruhe und die andere auf eine heiße Herdplatte. Im Durchschnitt ist das dann ein angenehmes Gefühl." [CB's Lehrer erklaert den "Durchschnitt"] -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
participants (4)
-
Andre Tann
-
David Haller
-
Dr. Jürgen Vollmer
-
Michael Behrens