• ベストアンサー

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

  • findコマンドで2週間以内のファイルをあるフォルダに移動するのですが。。

    現在solarisのシステムを運用しています。 ログを毎日定時にバックアップしていますが、 findコマンドで2週間以内のファイル探し、オプションのexec mvで、あるフォルダに移動するという方法を取っています。問題なく移動されるものの、変なメッセージが表示されます。 cannot open /abc/def ファイルが見つかりません cannot open /abc/def/aaa.tar ファイルが見つかりません ・・・ というのがずらーっと出てきます。 これはどういう意味なのでしょうか? このままクーロンとかで運用しても問題ないでしょうか?

  • solarisのクーロンタブで・・

    現在、solarisのシステムを運用しており、ログのバックアップをクーロンで自動バックアップしようと考えています。 で、エディットを立ち上げるため、 crontab -e のコマンドを打ってみたのですが、 848 と表示されます。 おそらくテキストエディターとして働いているような気がするのですが怖くて触れません。 この数字は一体何なんでしょうか?

  • solaris上のディレクトリをwindows diskへrshでtarファイルとして保存したい

    solaris上のディレクトリをwindowsからrshでtarを実行して直接windows上のフォルダにtarファイルとして保存したいのですが、コマンドが不明で困っております。 過去ログ(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1139234)の#1さんの回答にあったコマンドがうまくいきません。 solaris8(Ultra-5)  ホスト名 solAAA  バックアップしたいディレクトリ /home/hogehoge windows2000proSP4  ホスト名 winBBB  保存先 C\TEMP  保存する際のtarファイル名 backup.tar コマンドプロンプトでC\TEMPにcd後、実行したいと考えております。 ちなみに↓のコマンドは正常動作を確認しております。  rsh solAAA -l root "ls -lap /" どなたか↓のコマンドの誤っている個所と、解説をお願い致します。  rsh solAAA -l root "tar cf - -C /home/hogehoge . > backup.tar" rshはsolAAA上で実行されるので、winBBBの指定がどっかに必要のような。。。 根本的にこのようなことは不可能でしょうか。

  • タイムスタンプを指定してファイルを削除する方法

    WindowsXPを使っています。日付を指定し、それ以前のタイムスタンプを持つファイルを一括削除したいのですが、そのようなMS-DOSコマンドは存在しますか?無い場合は、それに代替する方法があれば、教えてください。

  • タイムスタンプでファイルを指定する方法

    UNIXコマンドにおいて、ファイル名から日付を判断できないファイルを消す為に、 ファイルのタイムスタンプを指定する方法を教えてください。 やりたいこととしては以下のようになります。 ・4月から7月の間に更新されたファイルを削除したい ・ファイルは同一ディレクトリに1000以上あり、消したいファイルはその内600ほどある

  • バッチで特定のファイルを消す方法と日付の計算

    いつもお世話になっております。 バッチの作成方法について教えてください。 tmpフォルダには日々ログファイルが作成されていきます。 ログファイルのファイル名はバラバラですが、必ず20140527のように yyyymmddの日付が入っています。 3日前のログはもう不要なので、削除したいのです。 (1)本日より3日前の計算はどのようにしたらよいでしょうか? (2)3日前の日付が入っているファイル名を削除するにはどのようにしたらよいでしょうか? 具体的にプログラムを書いて教えていただけないでしょうか。 お手数をおかけしますが、よろしくお願いします。

  • 常時書き込みされているファイルをtarでバックアップしたい

    Solaris9で/var配下を定期的にバックアップしたいと考え、 cronにて以下のようなコマンドを含むスクリプトを実行しています。 /usr/bin/tar cEfiX /backup/var_backup_`date '+%w'`.tar ${EXFILE} -C / ./var しかし、/var配下に常時書き込みされているログファイルがあり、 tarがreturncode=1で終了してしまいます。 その際のエラー出力は以下で、 tar: ./var/hogehoge.log: file changed size tarファイルに加える前と後で./var/hogehoge.logのファイルサイズが違っている という内容だと認識しています。 ※このファイルはバックアップの必要があるファイルでexcludeリストに加えるわけにもいきません。 tarコマンドの後に if [ $? != 0 ] という条件式を置いてエラーを検知しています。 何とかこのエラーだけを無視する妙案はありませんでしょうか?

  • Solarisバックアップ・リストアについて

    Solaris上でバックアップリストアのテストをしております。 バックアップ時とリストア時でls -Raの結果をファイルとして保存し diffコマンドで差がないことで バックアップ時とリストア時で差が無いことを確認したいのですが、 タイムスタンプの違い部分は無視するとして、このほかに変更されるファイルやフォルダというのはあるのでしょうか? 現在わかっているのは/procは変更されていています。

  • solarisにおけるファイルアクセスのログ取得に関しまして

    SolarisでWWWサーバを構築しています。 htdocs以下のデイレクトリに、ファイルが置かれた場合、削除された場合、更改された場合などのファイルアクセスログを取得したいと思っています。なにかよい方法はありますでしょうか? よろしくお願いいたします。

  • LOGファイルの比較

    Solarisを使用していて、現在sh(bash)を作成しています。 shの内容は、毎日吐き出されるLOGファイルの内容比較なのですが…。 引数にファイル名を指定して、其のファイルの差異を表示したいのです。 logには、勿論大量に日付等を持っているのですが、そういった日付等のlogファイル固有の情報は無視して、通常と違ったメッセージが出ていないかをチェックするツールにしたいと思っています。 diffやcmpだと、コマンドの性質からも思うように行きません。 どなたか、いい方法(コマンド)をご存知でしたらご教授ください。 お願いします。