【仮想】ESXi(VMware vSphere Hypervisor)コンソールでの日付の計算

はじめに

以前設定したバックアップでは、バックアップ先が枯渇する前に古いファイルを手動で削除していました。
いつか自動処理しないといけないと思いつつ放置状態でした。
基本的に2日おきにバックアップしているので、10日前までの保存でいいかと・・・・
cronで以下の設定を行いました。
実行日:8日
削除対象:前月20日~31日
実行日:18日
削除対象:前月1日~9日
実行日:28日
削除対象:前月10日~19日

ここで問題となったのが8日の削除条件です。
シェルで前月をdate関数で取得する必要があるのですが、引数「1 month ago」ではうまく動作しませんでした。
よく調べてみるとESXiのDate関数は、BusyBoxだったんですね・・・

10日前の年月を取得

BusyBoxでは1970/1/1を起点とし、経過した秒数を用いて計算します。
今回は10日前を求めたいので、[現在の秒数] - [10日間の秒数]で算出できます。

`TZ=JST-9 date -d “1970.01.01-00:00:$(( $( date +%s ) – $(( 10 * 24 * 60 * 60 )) ))” +%Y%m`

但しこの計算では「2038年問題」が含まれているので、暫定処置って感じでしょうか・・・

コメント