- - PR -
バックアップについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-20 01:39
そもそも、スクリプトを書く前に、ローテートしたいログファイル、そしてその
ログファイルを出力するプログラムを特定しないと、たぶん無理だと思います。 なぜなら、ログファイルを切り替える処理はプログラムによってはまちまちなのです。 そこで、logrotate だとログを出力するプロセスごとに処理を分けてます。たとえば、 /etc/logrotate.d/のhttpdとsquidのpostrotate処理を比べてみてください。 (プログラムはログ出力時には、ファイル名ではなくiNodeを使っているのが原因) ただし、/var/log/messages の用に syslogd 管理下のもの、あるいは /etc/syslog.conf を 修正して、ローテートしたいログをsyslogd管理下に置けるのであれば)、 /etc/syslog.confを修正してログ出力をスクリプトにして、そのスクリプトでログを ローテートすればできそうです。 syslogdとは無関係ですが、Apacheに付属しているツールrotatelogsがそういうことを やってますので、参考になるかもしれません。 また、既存のログファイルに手を付けず、別のファイルにバックアップを取るのであり、 さらにログファイルのエントリに年月日を識別できるようデータが入っているのであれば、 定期的にログファイルを(古いのも含めて)読んで、該当の日付の行だけ別ファイル にコピーすればできそうです。 あと、履歴が残るようなファイルシステム(CVSの様な処理をファイルシステムで行う)が 存在したと思いますので、そういったものを使えば、もしかしたら、任意の日付の任意の ログファイルを取り出す事もできるかもしれません。 (LVMのスナップショットではなくて、別のファイルシステムをどこか..SourceForgeあたり かも..で見かけたような) | ||||
|
投稿日時: 2004-12-20 11:29
>理想は例えば、/var/log配下のmessagesを1日分の内容だけ違うフォルダの中
>に違うファイルに作成して(messages.2004_12_19.logのようにその日の日付を >つけたい。) 簡単や。 replacer.sh
後は、crontab -e で 1 0 * * * [ -x /どっか/適当な/パス/replacer.sh ] && /どっか/適当な/パス/replacer.sh こいつを追加。 何れも root 権限での作業が必要。 $1 $2 $3 (プ 直す気無いんかえ・・・ [ メッセージ編集済み 編集者: コブラ 編集日時 2004-12-20 13:13 ] | ||||
|
投稿日時: 2004-12-20 13:02
たぶん、皆さんがおっしゃっていることがちんぷんかんぷんなのではないでしょうか?
シェルスクリプトが何かよくわかっていないんですよね? まずはここを読んでください。 http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html 次は、使うべきコマンドがわからないということですが、 これはログファイルを加工したりしなかったりで必要になるコマンドが変わってきます。
という処理がしたいのであれば、それをコマンドで行ってみてください。 コマンドでできるのであればそれをテキストファイルに書いて、実行してください。 ⇒コマンドでできる場合 動的な値を算出する方法がわからないという問題に当たると思いますが、そうなったら、また上記のサイトを見て、なんとかできないかあがいてみてください。で、あがいたシェルスクリプトをここに載せて、自分の理想の処理は何なのか、理想に反してどうなるのかを書きましょう。 ⇒コマンドでできない場合 コマンドでできないのであれば、コマンドを勉強する、他の方法がないか検討するのどちらかかと思います。 「〜〜な処理をしたいのですが、どうコマンドを実行すれば良いでしょうか、また、〜〜な処理をするために良い方法はないでしょうか」という質問をしましょう。 上記のように質問すれば、もっと的確なレスが付くと思います。 # 私のスタンスを言っておくと、よくわからないけどできるコードだけもらえれば良い、というのは賛成しません。 私も含めてみんな、これからさんのレベルがわからないのでレベルに合った解答ができないんですよ。 尤も、やりたいことや環境を具体的に書けば(「例えば」ではなく)、コブラさんがちゃんと動くスクリプトを書いてくれるかもしれませんが・・・・・・。 # replacer.shはdateの出力結果が想定と違うとちゃんと動きませんよ。 # あと、/var/log/以下にやたらとディレクトリができるので、もうひとつサブディレクトリを作った方が良いような気も。。。 | ||||
|
投稿日時: 2004-12-20 13:29
こんにちは。
日付は date '+%Y%m%d' こんな感じでフォーマットを指定して使うと扱いやすいかもです。 | ||||
|
投稿日時: 2004-12-20 13:41
>コブラさん
stamp=`date | sed 's/年//' | sed 's/月//' | sed 's/日//'` ymd=`echo $stamp | awk '{ print $1 "_" $2 "_" $3 }'` こう書くんだったら ymd=`date '+%Y_%m_%d'` こんな感じでいいと思います。 フォーマットは結構柔軟に指定出来るので便利です。 かぶってしまいました。 [ メッセージ編集済み 編集者: koji 編集日時 2004-12-20 13:44 ] | ||||
|
投稿日時: 2004-12-20 15:43
date '+%Y_%m_%d'
シンプルでエエな。。。 こっち使いましょう (プ |