現在、バックアップファイルを作成し、次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
tee
Clone 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