転送するコマンドをシェルに記載したいのですが
元が複数あっても同じところにもっていくわけでなく行先ももちろん
パスを分けるので複数書かないといけないです。
賢い書き方を教えて抱けますでしょうか?
最悪全部'&&'でつなげていってもいいんですが
かっこいい書き方で教えてください
aws s3 cp /var/log/maillog-* s3://{バケット名}/{パス}
aws s3 cp /var/log/spooler-* s3://{バケット名}/{パス}
この情報では、どのようなところに困難を感じているのかわかりません。
ファイルと転送先の具体的な対応についての情報わありますか?
たとえば、maillog-* であらわされるファイルは s3のどういう場所にどのような名前で配置されるのですか?
>この情報では、どのようなところに困難を感じているのかわかりません。
→確かに羅列してもできることなので困難ではありません
シェルスクリプト記載するにあたりかっこよくなるなら参考にしたいというだけです。
>ファイルと転送先の具体的な対応についての情報わありますか?
→いやこれについてはいまのところこれだけです。S3の設定して決まれば追記するんですが
決まればこの後ろに入れていくということだけです
ただ伺いたいのですが、コマンドの羅列をシェルに記載するにあたっての質問が
かっこよくしたい(見栄えを良くしたい、他人に見せられるレベルにしたい)ということにおいて
S3の場所を教えてほしいというのは本当に必要な情報なのでしょうか?
一応、bash や zsh にある連想配列(hash)を使えば見栄えはよくなる?かもしれませんが、本質的にはコマンドを羅列するのと同じです。まぁ、シェルスクリプトの先頭に set -e を付けるくらいでしょうかね。。。("&&" で繋げる必要はなくなります)
例えば /var/log にあるすべてのもしくは特定のディレクトリを、そのディレクトリ名から作られるバケット名やパス名に転送するのであれば、羅列でなくfor文などで効率よく書けでしょう。
ファイルとs3のパスの対応を 別のテキストファイルに入れておいて読むっていうのもありでしょう。
TakaiY様
ありがとうございます。
少しfor文での作成は頑張ってみたいと思います。
別のテキストファイルはちょっと・・・というところですね。
理由としては1つのシェルでシンプルにまとめたいということです。
残念ながらシェルがこれだけではありませんのでそういう考えをしております。
> 複数書かないといけないです。
いくつぐらいになることを想定していますか?
ログファイル20個ほどです。
/va/logにあるものだけはありませんね

回答3件
あなたの回答
tips
プレビュー