web-dev-qa-db-ja.com

パイプをscp、sftp、またはrsyncできますか?

私が制御していないリモートドライブに〜700GiBのディレクトリをtarして送信したいのですが。ローカルにtarballを作成してコピーするためのHDDスペースがありません。リモートもrsshで保護されています。サーバーにsshして任意のコマンドを実行することはできません。

ただし、scp、rsync、またはsftpを使用できます。したがって、私の質問は、これら3つのコマンドのいずれかに固有のものです。 scp、rsync、またはsftpがパイプをコピーし、反対側で任意のコマンドを実行できない方法はありますか?


更新:以下のソリューションは、セカンダリストレージでは機能しませんでした。特定のコマンドの実行に制限されています。 sshは使用できません。sshを使用するコマンドは、rsshでフィルタリング/制御されます。

最後に、すべてのセカンダリアカウントをキャンセルし、プライマリストレージのサイズを2倍にするために多額の費用を支払いました(プライマリホストは移行なしでこれを実行できました。これはクールでした)。次に、一時アーカイブを作成し、通常どおりに送信しました。 (これは、当初のストレージ容量では実行できませんでした。)

将来的には、専用の大容量ストレージを備えたセカンダリVPSを使用して、これが再び発生しないようにします。私が求めていたことが不可能であることは明らかです。

7

これは厳密には「パイプ」ではありませんが、基本的にscpに特定のFD(パイプにすることができる)をホストから他のFDにコピーするように指示できます。次のような単純なbashコマンド:

scpは事前にサイズが必要なので機能しません):

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

しかし、純粋なsshで機能します。

tar cz files to compress | ssh Host "cat > /path/to/new.file"
3
Jakuje

SFTP経由のRSYNC動作

何も圧縮しなくても、LFTP(名前は誤解を招く)とLFTPのmirrorサブシステムを使用して、ディレクトリ構造を反対側に複製できます。 LFTPはSFTPをサポートし、ミラーサブシステムはrsyncのほぼすべての機能をサポートします。また、転送を必要な数の接続に分割して、転送を高速化することもできます。私はいつもこれをします。

また、この投稿をチェックしてください: https://serverfault.com/questions/135618/is-it-possible-to-use-rsync-over-sftp-without-an-ssh-Shell

0
Aaron