• ベストアンサー

solarisで2週間前のファイルを指定する方法

現在solarisのシステムを運用しており、ログのバックアップをしています。 クーロンによる時間指定で、別フォルダに圧縮してバックアップという 形なのですが、現在ではたまる一方なので2週間前のものを削除したいと考えています。 ファイルは log_`date "+%Y%m%d"`.tar という風に本日の日付で命名しているので、 本日から二週間前のものを削除、というスクリプトにしたいのですが。。。 if [*** -* ・・・] のような条件設定で、 たとえばファイル名が今日の日付から2週間前の日付が入っているかどうかを判定させるには どうしたらいいでしょうか? またはタイムスタンプを参照して、それが2週間前以前のもの、という指定をする方法があるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chaff
  • ベストアンサー率30% (264/874)
回答No.1

ふふふ。過去にも同様の質問がありました。 なーんて、実は2つ目の質問は私自身が起こした質問だったりします。 私も、ここで教えられたとおりにしてうまくいきました♪ いやー。感謝感謝でした。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=29184,http://oshiete1.goo.ne.jp/kotaeru.php3?q=56928
goodtreasure
質問者

お礼

なるほど。。こんな方法があったんですね。早速テストしてみました。 明日あたりからshellに組み込んでいこうと思います。 ご回答ありがとうございました!

その他の回答 (2)

回答No.3

タイムゾーンの値をずらすという技も使えるかも。 たとえばTZ=JST-9 の引き算の値をずらすと過去日付とかがdateコマンドで ひろえます。 (例・TZ=JST+15 でそのセッションでのdate表示が一日前になる) この戻り値でファイル名検索というのも手です。

goodtreasure
質問者

お礼

タイムゾーンですか。また勉強になりました(笑 その方法でもやらせていただこうと思います。 ありがとうございました!

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

わたしはこんなスクリプトを使ってます。 よろしかったら参考にしてください。 1日につき1ファイル ファイル名に日付けを含ませる 過去7日間は通常保存 過去8ー14日間は圧縮して保存 過去15日以前は削除 使い方 (crontabに) 59 23 * * * rotatelog.sh /var/log/sendmail/sendmail.log > /dev/null 2>&1 23時59分に実行して60秒待つところがミソです。 rotatelog.sh ------------------------------------------------------ #!/bin/sh PATH=/bin:/usr/bin if [ -z "$1" -o ! -f "$1" ]; then   exit 1 fi DATE=`date +%Y%m%d` sleep 60 if cp $1 $1.$DATE && cat /dev/null > $1; then   find $1.???????? -type f -mtime 8 -exec gzip {} \;   find $1.????????.gz -type f -mtime 15 -exec rm {} \;   exit 0 fi exit 1 ------------------------------------------------------ (見やすいよう、空白には全角を使ってますのでコピぺするときは注意)

goodtreasure
質問者

お礼

なるほど。。$1というのは確か/var/log/sendmail/sendmail.logをあらわすんでしたよね?? このような複雑なshellが組めるようにもっと勉強しようと思います。 参考になりました。ありがとうございました!

関連するQ&A

専門家に質問してみよう