date コマンドで「昨日」は?

サーバのログを整理するシェルスクリプトで扱うファイル名。
バッチ処理が動くのは日付が変わってからなので、以下のように日付毎にファイル名が異なる場合にどうやってしていするか。

xxxx-2009-01-01.log

単にdateコマンドだけだと、

$ date
Mon Jan 13 12:00:50 JST 2009

となる。

書式をあわせるために

$date ‘+%Y-%m-%d’
2009-01-13

さて、ここからだ。上記で得られたのは今日の日付。昨日は?

date –help や、 info date で調べてみると、-d オプションが使えそうだ。

$date -d ‘yesterday’ ‘+%Y-%m-%d’
2009-01-12
$date -d ’1 days ago’ ‘+%Y-%m-%d’
2009-01-12

できた。

-d ‘yesterday’ は、 -d ’1 days ago’ でも同じ事らしい。ってことで、「明日」を取得する場合は、 -d ‘tomorrow’ や、 -d ’1 days next’でいける。

以下のようにすれば、シェルスクリプト中のファイル名がセットできると。

fname=”xxxx-`date -d ’1 days ago’ ‘+%Y-%m-%d’`.log”

気になる:ANS-9010

気がつけば、メモリがすごく安い。DDR2を2GBx4でそろえても1万円にならないなんて。今2GBx2+1GBx2の6GB構成で、3GBちょっとをRAMDISKとして使ってるけど、64bitなWindowsにしてやれば、通常使ってるVMwareのクラインとに割り当てるメモリをもっと増やせるなぁ。などと思いつつも、手元のXP64bitはお先真っ暗だし、改めてVistaを買うのもおもしろくない。
ここはやっぱりUbuntuをメインにする構成に戻るか?

安いメモリ価格とともに、気になるアイテムが、ACRDANS-9010。リチウムイオンバッテリーとパソコン用DRAMを使ったRAMDISK装置だ。DDR2メモリスロットが8個あり、一応8GBx8の64GBなディスクを作れるという。しかしメモリ1本が4GBのものがようやく1万円とかで出回るようになってきたぐらいで、8GBのものなんかべらぼうに高額商品となっているので現実的じゃない。
価格の安い2GBを使って16GBかぁ。。

このANS-9010の紹介を見つけたのが、「ACARDのDDR2 RAMディスク「ANS-9010」が発売」。
そして、それを実際に使ってみたレビューが、「DDR2対応RAMディスク「ANS-9010」を試す」。

XP起動時のムービーが掲載されているけど、XPの起動時の画面が一瞬だよ。。。
まぁPCは起動するためのものじゃなくて、その後の様々なアプリケーションが動いてナンボだけど、OSがこれだけ高速で起動するのだから、その後の動作の軽快さも十分期待できる。

ノートPCにはSSDを入れたいと思ってるんだけど、デスクトップのシステムとアプリケーション用にはこれを使ってみたいな。

VMwareのディスク使用量を減らす – VMwareToolsがインストールされている場合

複数のOS環境を用意して作業をするために、VMwareは欠かせないソフトとなってます。

このソフトの気が利く点の一つとして、ゲストOSのドライブのサイズをたとえば64GBとしても、実際には使用している分+α程度容量しか容量を必要としないことがある。もちろん最初に64GB確保することもできるけど、環境の複製やバックアップのことを考えると必要最低限に済ませたいからこの機能は非常に助かる。

とはいえ、一時的に大きなファイルを扱ったりすると、+αの分が増え、結果的に大きなファイル群になってしまう。
これの対応策として、ゲストが使っている部分だけをトリミングして、スリム化する機能がある。

VMwareToolsがインストールされていることが前提だけど、Toolsを起動して、画像のような画面を開き、「圧縮の準備」ボタンを押すと、圧縮作業を始めてくれる。


もちろんWindowsだけじゃなくて、X-windowが動くLinuxなども同じらしい。
じゃあXを入れてないサーバみたいな環境のゲストはどうしたらいいんだろう?

ハードディスクの中身を消去

手元に、ハードディスクが10個以上ある。
自分で使わなくなったものや、仕事で客先の壊れたPCから抜き出したもの、会社の古いサーバに使っていたものなど。

何故そんなにあるのかというと、やっぱりデータが他人に見られちゃイヤだから。大したデータは入っていないとはいっても、見られないに越したことはない。

ではどうするか、と言う話。

いろいろな方法はあるけれど、Windows上からおこなうのか、Linuxを使うかを検討した。

Windowsなら、コマンドプロンプトを開いて、以下のようにすると、Zドライブの内容をクリアする。

cipher /w:Z:

ただ、NTFSフォーマットされたドライブであることが必須で、本来NTFSボリュームの暗号化関連のツールなので、いまいち使い勝手がよくない。
それでも、0×00で埋めて、次に0xFFで埋めて、最後に乱数を埋めるという3段階のステップを行うので、ドライブ(パーティション)単位では、充分消去を行ってくれる。

linuxの場合、一番お手軽なのは、以下のようにする。

dd if=/dev/urandom /dev/HDD

こうすれば、乱数をハードディスク全体に上書きしてくれる。上記の場合、パーティションなど関係なく、ディスクの先頭から最後までを乱数で埋め尽くす。これを2回程度行えば、そこらのディスク復旧ソフトでもお手上げだ。

どうせ2、3回繰り替えさせるなら、ちゃんとツールを使った方がいい。
GNU coreutilsに含まれている shredコマンドだ。以下のようにすると、/dev/hdaとして認識したデバイス(パーティションなんか関係ねぇ)3回乱数を書き込み、最後にゼロで埋める。 -v をつけておけば、進捗を表示しながら行う。

shred -v -n 3 -z /dev/hda

しかしどの方法で消去するにしても時間がかかる。80GBのHDDだと、3時間4時間グライか?USB-IDEな変換ツールだからいけないのかな。素直にIDEにつなげればもっと早いか?
少なくともOSから複数台のHDDとして認識できるから、複数台同時作業ができるか。。。
これからはS-ATAが主流だから今更IDE向けのものに投資してもしょうがないからなぁ。
どうせ明日も仕事しながらPCの余力でこの作業させてるんだろうから、もっと速い方法にするか。