RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
MOBILE
qrcode
LINKS
PROFILE
OTHERS

02
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
--
>>
<<
--

bose999's memo

<< Eclipseの次期バージョン、Dynamic Languages Toolkit、Ruby | main | 妻と子供を持つものとして。。。 >>
同じファイル名で毎日出力されるファイルを世代管理したい。。。
0
    
    同じファイル名で毎日出力されるファイルを世代管理したい。
    という事で大急ぎで作成、ハイー作りますよと。
    
    下記をcronに設定してねと。。
    
    
    #!/usr/bin/ruby #ローテーションするファイルの存在するフォルダ FOLDER_PATH = '/home/xxx/dump' #ローテーションするファイル FILE_NAME = 'db.dmp' #何個ファイルを何世代ローテーションするか指定 ROLLING_FILE = 7 #ローテーションする元のファイルフルパス名 rollingFile = FOLDER_PATH + '/' + FILE_NAME if FileTest.exist?(rollingFile) #ローテーションするファイルが存在するので処理をする #最も古い世代のファイルフルパス名 lastDoFileName = rollingFile + '.' + ROLLING_FILE.to_s if FileTest.exist?(lastDoFileName) #最も古い世代のファイルが存在するので削除する File::delete(lastDoFileName) end (ROLLING_FILE - 1).downto(1) { |i| #既存の世代管理しているファイルの世代を1つずつアップする changeBeforeName = rollingFile + '.' + i.to_s changeAfterName = rollingFile + '.' + ( i + 1 ).to_s if FileTest.exist?(changeBeforeName) #世代をアップするファイルが存在したので世代をアップする File::rename( changeBeforeName, changeAfterName ) end } #最新ファイルを最新世代にする。 File::rename( rollingFile, rollingFile + '.1' ) end
    | Ruby | 22:49 | comments(2) | trackbacks(0) | - | - |
    とおるさんへ

    はい。場面によってはlogrotateの方がいいと思います。

    ただ、今回Rubyでやったのはlogrotateを知らない人に
    logrotateを教えてミスのリスクを負うよりも、
    今回のRubyのソースの方が要件を満たしていて
    シンプルでミスしにくいのでどうぞ。
    という事で作りました。(笑

    1つのファイルの中の定数で、パス・ファイル名とか
    ローテーション数とか変更できるので、
    viでこのスクリプトをいじるかFTPで差し替えればと
    運用変更がシンプルという事で。

    #Rubyで書きたかったというの別次元で。。。(笑

    logrotateの参考URL:
    http://linux.kororo.jp/cont/server/logrotate.php
    | bose... | 2007/06/29 10:45 AM |

    UNIX系だったらloglotateでいいのではないか?
    とふと思いました。
    | とおる | 2007/06/29 10:23 AM |










    http://bose.techie.jp/trackback/552845