SFTPを使用する代わりに単一のファイルの場合、送信側cat
またはpv
送信側でsshを介してファイルをパイプ処理tee
し、中間サーバーで使用してデータをそこにファイルに送信し、もう一方のsshリンクを介してコピーを送信することができますデータをファイルに書き込むだけです。正確なブードゥーが必要だったので、今すぐプレイする時間がないので、読者のために演習として残しておきます(申し訳ありません)。この方法は、2番目の宛先がSSHを介してパブリックにアクセスできる場合にのみ機能しますが、クライアントマシンとして説明する場合はそうではありません。
「実行と待機」は少ないが、それ以外の方が簡単な別のアプローチrsync
は、サーバーとクライアントBの間で使用することです。これを初めて実行すると、データの部分的なコピーを取得できますが、再実行することができますその後、より多くのデータを取得します(Client1-> Serverの転送が完了したら、最後に1回実行します)。これは、サーバーがSFTP転送中にデータを正しいファイル名に直接入れた場合にのみ機能します(ファイルが完全に転送されると名前が変更される一時ファイルにデータが移動する場合があります-これは、ファイルの更新はよりアトミックですが、rsyncのアイデアは使用できなくなります)。scpの代わりにC1-> S転送にrsyncを使用することもできます(使用する場合--inplace
上記の問題を回避するためのオプション)-rsyncを使用すると、C1-> Server接続で大規模な転送中に問題が発生した場合に、すべてを再送信する必要がなくなります(rsync --inplace -a --progress <source> <dest>
rsyncが利用可能な場合、scp / sftpの代わりに使用する傾向があります。この「転送再開」動作)。
上記を要約するには、次を実行します:
rsync --inplace -a --progress <source> user@server:/<destination_file_or_folder>
client1で実行中
rsync --inplace -a --progress user@server:/<destination_file_or_folder> <destination_on_cli2>
最初の転送が完了するまで、client2で繰り返し実行します(すべて実行できるようにもう一度実行します)。rsync
毎回ロット全体を転送するのではなく、ロケーションを更新する必要がある絶対最小値のみを転送するのが非常に得意です。パラノイアのためには、追加したい場合があります--checksum
(大きなファイルのためのより多くのCPU時間がかかりますが、それが必要とされない限り、はるかに多くのデータが転送されてにはなりません)のrsyncコマンドにオプションを、スピードのための--compress
データならばオプションが役立ちます転送するファイルはまだ圧縮形式ではありません。