Können Sie eine Pipe scp, sftp oder rsync?

9

Ich möchte ein ~ 700GiB-Verzeichnis tarieren und an ein Remote-Laufwerk senden, das ich nicht kontrolliere. Ich habe lokal keinen Festplattenspeicher, um den Tarball zu erstellen und ihn dann zu kopieren. Die Fernbedienung ist auch durch rssh geschützt - Sie können nicht in den Server ssh und beliebige Befehle ausführen.

Ich kann jedoch scp, rsync oder sftp verwenden. Meine Frage bezieht sich also speziell auf einen dieser drei Befehle. Gibt es eine Möglichkeit für scp, rsync oder sftp, eine Pipe zu kopieren, ohne beliebige Befehle auf der anderen Seite ausführen zu können?


Update: Die folgenden Lösungen hätten bei uns in unserem Sekundärspeicher nicht funktioniert. Wir können nur bestimmte Befehle ausführen. Wir können nicht ssh - Befehle, die ssh verwenden, werden mit rssh gefiltert / gesteuert.

Am Ende haben wir alle unsere sekundären Konten gekündigt und viel Geld bezahlt, um unsere primäre Speichergröße zu verdoppeln (unser primärer Host konnte dies ohne Migration tun, was cool war). Wir haben dann ein temporäres Archiv erstellt und es wie gewohnt gesendet. (Was wir mit unserer anfänglichen Speichermenge nicht tun konnten.)

In Zukunft werden wir einen sekundären VPS mit einem eigenen dedizierten größeren Speicher verwenden, damit dies nicht erneut auftritt. Es ist klar, dass das, wonach ich gefragt habe, nicht möglich ist.

SaburoutaMishima
quelle
Ich habe dies auf der Schwesterseite beantwortet - kurz gesagt, lftpist in der Lage, dies über das SFTP-Protokoll zu tun.
Bob

Antworten:

4

Es ist nicht genau "Pipe", aber Sie können grundsätzlich festlegen scp, dass bestimmte FD (die Pipe sein können) von Ihrem Host auf den anderen kopiert werden sollen. Einfacher Bash-Befehl wie folgt:

( scpfunktioniert nicht, da es eine Größe im Voraus benötigt):

scp <(tar cz files to compress) host:/path/to/new.file

aber es kann mit rein funktionieren ssh:

tar cz files to compress | ssh host "cat > /path/to/new.file"
Jakuje
quelle
2
Hast du das versucht? Es funktioniert nicht bei mir (OpenSSH scp 6.6). Das scp-Protokoll erfordert das Senden der Dateigröße vor dem Inhalt, was nicht zum Senden eines Streams unbekannter Länge geeignet ist.
Kenster
@ Kenster Ja, du hast recht. scpwird nicht funktionieren. Aber es sollte mit rein funktionieren ssh. Siehe bearbeitete Antwort. Ich habe das nicht versucht, aber konzeptionell sollte es den Job machen.
Jakuje
@Jakuje, aber der Punkt dieser Frage ist, dass rsshdas Aufrufen verhindert wird cat, es muss einen der drei genannten Befehle durchlaufen.
b0fh
0

RSYNC-Verhalten über SFTP

Ohne etwas zu komprimieren, können Sie die Verzeichnisstruktur mithilfe von LFTP (Name ist irreführend) und dem mirrorSubsystem von LFTP auf die andere Seite replizieren. LFTP unterstützt SFTP und das Spiegel-Subsystem unterstützt nahezu alle Funktionen von rsync. Sie können die Übertragung auch in beliebig viele Verbindungen aufteilen, um die Übertragung zu beschleunigen. Ich mache das die ganze Zeit.

Beispiel

Schauen Sie sich auch diesen Beitrag an: /server/135618/is-it-possible-to-use-rsync-over-sftp-without-an-ssh-shell

Aaron
quelle