3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(ネットワーク)遅延を疑似的に発生させる

VPN越しでのSMBを使うツールの動作が遅いということで、検証をローカルで行うためにわざと遅延を発生させたいと思っています。

Linuxだとtcコマンドでできるようですが、Windowsで動作するツールを探したところありました。

clumsyです。

WinDivert というライブラリのGUIツールみたいですが、clumsyをダウンロードするとWinDivertも入っているので別途インストールは不要です。

[Filtering]で、どの通信に適用させるかのフィルタを入れます。

遅延を疑似的に発生させるには、[Lag]にチェックを入れ[Lag Time]に遅延時間を入れます。 [Presets]から選ぶこともできますし、自分で構文を書くこともできます。 特定のIPとの通信にだけ適用する場合は、以下のように記載できます。

ip.DstAddr = 10.0.0.10 or ip.SrcArrr = 10.0.0.10

フィルター構文はManualを参照。

他にもパケットの破棄や、改ざん、ブロック等いろいろできるようです。 詳細は、clumsy aboutを参照。

参考: SE の雑記 clumsy を使用して Windows でネットワーク遅延を発生させる

ドライブ丸ごとrobocopyする際の注意

バックアップ対象ドライブのパス指定

robocopyでドライブまるごとバックアップしようとしたんですが、エラーに。。。 原因はパスの表記でした。最初末尾に \ を入れてたんですが、これだとNGのようです。 バックアップ対象パスを以下のように \ なしに修正したら動きました。

D:\ →誤
D:  →正

[System Volume Information]と[$RECYCLE.BIN]の除外

ドライブ丸ごとコピーとなると、System Volume Information と $RECYCLE.BIN は除外しないといけません。 /XD オプションで除外フォルダを指定できますが、$RECYCLE.BIN の場合、エスケープ(`)が必要です。

 /XD "System Volume Information" "`$RECYCLE.BIN"

フォルダのタイムスタンプ

robocopyで配下にファイルがあるフォルダをコピーすると、バックアップ先のフォルダのタイムスタンプがバックアップ元と異なる物になるケースがあります。 詳細は Robocopyコマンド: /DCOPY:DATのすすめ を見ていただくと原理がわかかります。 フォルダのタイムスタンプをコピーするためには、 /DCOPY:DAT をつけるといいようです。

上記まとめると、こんな感じのコマンドになりますかね。

robocopy "D:" "E:\dst" /MIR /DCOPY:DAT /R:2 /W:5   /XD "System Volume Information" "`$RECYCLE.BIN"