ubuntuusers.de

unzip auf ext. Rechner

Status: Gelöst | Ubuntu-Version: Ubuntu 19.10 (Eoan Ermine)
Antworten |

pacmexx

Anmeldungsdatum:
11. Februar 2019

Beiträge: 56

Hallo,

ich möchte mit folgender Anweisung -

unzip -a something.zip -d foo@ip-address:/home/user/foo

eine zip-Datei per ssh in ein existierendes Verzeichnis auf einem anderem Rechner im Heimnetzwerk extrahieren - bekomme jedoch folgende Fehlermeldung:

checkdir:  cannot create extraction directory: foo@ip-address:/home/user/foo
           No such file or directory

Ist das überhaupt so möglich, in der man-page finde ich dazu nichts oder macht man das generell anders?

Danke+Gruß pac

frechdachs

Anmeldungsdatum:
3. Juni 2013

Beiträge: 120

pacmexx schrieb:

Hallo,

ich möchte mit folgender Anweisung -

unzip -a something.zip -d foo@ip-address:/home/user/foo

eine zip-Datei per ssh in ein existierendes Verzeichnis auf einem anderem Rechner im Heimnetzwerk extrahieren - bekomme jedoch folgende Fehlermeldung:

checkdir:  cannot create extraction directory: foo@ip-address:/home/user/foo
           No such file or directory

Ist das überhaupt so möglich, in der man-page finde ich dazu nichts oder macht man das generell anders?

Ungetestet:

1
2
3
4
5
# 1.) Datei kopieren:
scp DATEI user@host:/path/to/destination

# 2.) Datei entpacken:
ssh user@host 'unzip /path/to/destination/DATEI'

Oder alternativ sshfs einsetzen, das funktioniert ebenso:

https://linux.die.net/man/1/sshfs

Danke+Gruß pac

Grüße,

frechdachs

wentz89

Anmeldungsdatum:
9. Januar 2020

Beiträge: 6

Moin,

ich glaub die Option -p könnte dir helfen. Ich kann das im Moment nicht testen aber die Beschreibung ist wie folgt: "-p Extract files to pipe (stdout). Only file data is output and all files extracted in binary mode (as stored)."

Der Befehl würde dann ungefähr so aussehen:

1
unzip -p -a -d something.zip | ssh <username>@<ip.addresss>:</path/to/foo>

Wie gesagt kann dir nicht versprechen, dass das so problemlos klappt. Vermutlich muss man ssh noch einen Befehl für das Remote System geben. Ein Beipsiel findest du https://www.maketecheasier.com/ssh-pipes-linux/ in Abschnitt 3. Remote Hard Drive Backup für den dd-Befehl.

Persönlich würde ich dir rsync empfehlen. Wenn eine ssh-Verbindung möglich ist, kannst du folgendes machen:

1
2
unzip -a something.zip -d /local_folder
rsync -a /local_folder <username>@<ip.addresss>:</path/to/foo>

Vorausgesetzt /foo existiert bereits auf dem Remotesystem.

VG

Seebär

Avatar von Seebär

Anmeldungsdatum:
2. Mai 2009

Beiträge: 833

Warum willst du das auf dem Quellrechner machen? Ist unzip auf dem Zielrechner nicht installierbar oder langt dort der Platz nicht, um parallel noch die zip-Datei dort zu haben?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13370

wentz89 schrieb:

ich glaub die Option -p könnte dir helfen. Ich kann das im Moment nicht testen aber die Beschreibung ist wie folgt: "-p Extract files to pipe (stdout). Only file data is output and all files extracted in binary mode (as stored)."

Der Befehl würde dann ungefähr so aussehen:

1
unzip -p -a -d something.zip | ssh <username>@<ip.addresss>:</path/to/foo>

Nein, das funktioniert nicht, weil dann alle Dateien im Archiv in einen Strom geschoben werden! Man müsste die Liste der Dateien im Archiv ermitteln und dann einzeln extrahieren. Das ist aber viel zu umständlich.

Persönlich würde ich dir rsync empfehlen. Wenn eine ssh-Verbindung möglich ist, kannst du folgendes machen:

rsync hilft ja nicht, wenn man die Eingabe in einem Zip hat.

1
2
unzip -a something.zip -d /local_folder
rsync -a /local_folder <username>@<ip.addresss>:</path/to/foo>

Vorausgesetzt /foo existiert bereits auf dem Remotesystem.

Das ist aber umständlich und ineffizient, weil man dann erst lokal auspackt und dann übers Netz schickt. Viel besser sind die Varianten, die das Archiv auf das Zielsystem kopieren und dort entpacken. unzip sollte ja überall vorhanden sein. Die Lösung von frechdachs mit scp ist da viel besser.

pacmexx

(Themenstarter)

Anmeldungsdatum:
11. Februar 2019

Beiträge: 56

Hallo,

danke für die prompte Rückmeldungen.

Warum willst du das auf dem Quellrechner machen? ...

-das Problem ist nur eine Fingerübungen - war nur eine Idee wie man vielleicht etwas angehen kann - jetzt bin ich definitiv schlauer 😀

Ungetestet:

1
2
3
4
5
# 1.) Datei kopieren:
scp DATEI user@host:/path/to/destination

# 2.) Datei entpacken:
ssh user@host 'unzip /path/to/destination/DATEI'

Oder alternativ sshfs einsetzen, das funktioniert ebenso:

https://linux.die.net/man/1/sshfs

Grüße, frechdachs

'unzip /path/to/destination/DATEI'

- sehr interessant, kann es aber so nicht gebrauchen und sshfs werde ich mir anderweitig zu Gemüte führen.

unzip -p -a -d something.zip | ssh <username>@<ip.addresss>:</path/to/foo>

- nein, funktioniert nicht.

unzip und rsync 

- das wäre aktuell dann mein Favorit.

Viele Danke für die Infos.

Danke+Gruß pac

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17674

Wohnort: Berlin

Ich habe hier einen Demoeinzeiler:

1
tar cf - quelle | ssh remotehost " ( cd /some/path ; tar xf - ) " 
  • tar -c: Ein (Tape!)-Archiv erzeugen (create)

  • f - : Filename nix (auf STDOUT ausgeben)

  • quelle: Verzeichnis, welches mit tar gepackt werden soll

  • Die Ausgabe lenken wir aber nicht auf den Bildschirm - wer könnte damit was anfangen? - sondern durch eine Pipe

  • ssh remotehost: also an das ssh-Kommando weiter, welches sich mit remotehost verbindet, einem Rechner

  • " (...) ": auf dem führen wir dann ein Kommando aus

  • cd /some/path; : Wir wechseln in das Verzeichnis, in dem wir den Zinnober auspacken wollen

  • tar xf - : Wir entpacken mit tar, (x=eXtract), f=file, - filename missing, lese von STDIN

Pro und Con:

  • Tar packt die Dateien ohne auf dem Rechner den Platz zu benötigen das Ergebnis zwischenzuspeichern.

  • Auf dem Zielsystem braucht man auch keinen Platz, um das Archiv erst mal abzulegen.

  • Man könnte auch noch zippen, aber je nach Geschwindigkeit des Netzes kostet das zippen und entzippen mehr Zeit, als man mit der kleineren Datenmenge einspart. In vielen Fällen dürfte der Zeitunterschied keine Rolle spielen - das Tippen des Kommandos mehr Zeit kosten.

Antworten |