A Micro Toolbox

ソフトウェアのニッチな問題の対処記録です

夏時間があっても大丈夫なバックアップファイル名

バックアップファイルを作る際、foo.txt.20151228_160123のようにファイル名に日時をつけることがある。

もし夏時間(summer time / daylight saving time (DST))を採用している地域だと、切り替わるあたりでファイル名が重複したり、新旧が逆転したりするかもしれない。


手っ取り早い改善策はタイムスタンプをUTCにすること。

$ date +"%F_%X";date -u +"%F_%X"
2015-12-28_16:25:25
2015-12-28_07:25:25
$

これで大抵はまかなえるが、ローカルの日付と勘違いしやすいし、逆にローカルの日付がほしいときは時差を加味して読み取る苦労が発生する。


代替案としては、UNIX timeを先頭につけること。

$ date +"%s_%F_%X";date -u +"%s_%F_%X"
1451287512_2015-12-28_16:25:12
1451287512_2015-12-28_07:25:12
$

順番の維持はUNIX timeにまかせて、参考情報としてローカルの日時を後ろに置く。

2038年問題に気を配る必要があるものの、最近の環境なら大丈夫なはず。


ついでながらRubyのメソッド。

def timestamp
  time = Time.now
  return "#{time.to_i}_"+ time.strftime("%Y%m%d")
end