ファイルを両方のターゲットに効率的に転送

ファイルを両方のターゲットに効率的に転送

現在、バックアップファイルを作成し、次curlを使用してリモートホストに送信しています。

tar -cvzf - ./folder | curl -u user:pwd ftp://example.com/folder/backup.tar.gz --ftp-create-dirs -T -

私も送りたい同じファイルその他の目的地~へ同じホスト(実際には同じフォルダにありますが、あるフォルダにはファイル名に日付スタンプがあり、他のフォルダにはありません。)

tar現在、私は毎回異なるターゲットを指定して上記(および含まれている)タスクを2回実行します。これは明らかに大丈夫ですが、最適ではありません。

出力を「フォーク」して2つの異なるコマンドtarに送信できますか?curl

あるいは、リモートホストの帯域幅に関してより効率的である可能性があります。ファイルをホストに一度転送し、その場所にコピーしますか?

答え1

teeClone stdoutをファイルに使用し、curl最初のファイルが完了した後に2番目のファイルを実行できます。または、パラメータを変更してtarバックアップをローカルファイルに保存し、両方のプロセスをcurl実行してリモートホストに転送することもできます。どちらのソリューションも、帯域幅、速度、およびローカルディスクスペースの面ではあまり良くありません。

最善の解決策は、ファイルを一度転送してから所定の場所にコピーすることです。あなたはsshそれを使用することができます公開鍵認証curlユーザーパスワードの公開を避け、リモートホストからファイルを簡単に複製するのではなく、

tar -cvzf - ./folder | ssh -i ~user/.ssh/id_dsa [email protected] 'tee /folder/backup_datestamp.tar.gz | dd of=/folder/backup.tar.gz'

ローカルユーザーがいない場合は、localhostで秘密鍵の場所を変更できます。ユーザー(そして成功した認証のために公開鍵をリモートホストにコピーすることを忘れないでください)。リモートホストのコマンドでdd of=file1 ; cp file1 file2代わりに使用することもできます。tee

関連情報