カテゴリー別アーカイブ: 技術・テクニック

robocopyコメンドでミラーリングバックアップ

windows7でディレクトリを効率よく完全にバックアップするスクリプト

大地震・暴風豪雨・大停電・ミサイル・隕石衝突・テポドン(w)など、あらゆる震災に備え、PCデータはバックアップをとり、物理的に離れた実家などに保管しておくのが私のルールです。

500GBのポータボーハードディスクを2つ購入し(コスパの良いBUFFALO HD-PVRU2を2つ購入)、バックアップファイルの入ったポータボーHDDが必ず1つは150km離れた実家に保管されている状態をとっています。
帰省する度に、最新のバックアップをとったポータボーHDDを実家へ持って行き、実家に保管してあったポータボーHDDを自宅へ持って帰ります。(企業並みの事業継続性!とはいかないけど、怠りません♪)

毎回のバックアップにあまりにも時間がかかるので、これまで効率の悪かったスクリプトを改修しました。(今までは、一度ドライブを空にしてからコピーしていました。そんなことをしていてはバックアップに何時間も費やすことになり、その間にちっさいテポドンが飛んできて家はほぼ無傷なのに運悪くPCのみに直撃して破壊されたら悔みに悔やみきれません。)

robocopy.exeで堅牢性の高いファイルコピー!

robocopy.exeは、Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2で用意されているOS標準コマンドです。安心して使えますね!
robocopyは、リモートのファイル・サーバ同士でフォルダを同期させるために作られたコマンドですから、ミラーリングコピーをしたい場合には打って付けですね。

それではまず、これまで使っていたスクリプトをお披露目します。(恥ずかしすぎて死にそうです)

ECHO OFF
ECHO;
ECHO F:が対象のドライブであるか確認します。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
F:
SET filename="これはバックアップ用ドライブです.txt"
ECHO 「F:\%filename%」が存在するか確認します。。。
TIMEOUT /T 3 /NOBREAK > NUL
IF EXIST %filename% GOTO RM
ECHO %filename%が見つかりません!F:が対象ドライブではない可能性があります。
ECHO 「F:\%filename%」を作成してから再実行してください。
pause
EXIT

:RM
ECHO F:が対象のドライブであることを確認しました。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
ECHO 10秒後にドライブを空にします。
TIMEOUT /T 10
RMDIR F:\backup /s /q
ECHO ドライブを空にしました。
TIMEOUT /T 3 /NOBREAK > NUL

ECHO 3秒後にバックアップを開始します。
TIMEOUT /T 3 /NOBREAK > NUL

XCOPY "K:\Users\ahoman\AppData\Local\Evernote\Evernote" "F:\backup\Evernote" /e /h /y /i

XCOPY "K:\仕事のファイル" "F:\backup\仕事のファイル" /e /h /y /i

XCOPY "K:\ユーザー\ahoman" "F:\backup\ユーザー\ahoman" /e /h /y /i

スクリプトの解説・・・
まず、ポータボーHDDを空にします。このとき、ドライブレター(「C:」や「D:」など)がいつもと変わっていてローカルのドライブを削除してしまったら大変です!なので、空にする対象のドライブが本当にバックアップ用ポータボーHDDかどうかをアナログな方法で調べています。
その方法が、ポータボーHDDのトップディレクトリに
「これはバックアップ用ドライブです.txt」
という名前の空ファイルを置いておく、という方法です。
ドライブにこのファイルが無ければスクリプトはそこで終了、ファイルが有ればドライブを空にするステップに進みます。
空にするまでに更に10秒間の猶予を与え(どんなけ慎重やねん!)、そして空にし、バックアップを開始します。

さて、こんなバックアップの仕方をしていたら寿命が3倍伸びても収入は3%くらいしか増えません。

そこで今回、robocopyコマンドを使って効率よくバックアップをとるスクリプトに改修したいと思います。

変更点は以下です。
・ドライブを空にするステップを削除する。
・XCOPYコマンドをROBOCOPYコマンドに変更する。

robocopy.exeの便利なオプションの1つに「/MIR」があります。このオプションを使えばミラーリングが可能です。新しいファイルはコピーし、更新されたファイルは上書きし、コピー元に無いファイルはコピー先から削除してくれます。つまり、この最小限の働きで全く同じディレクトリ構造を作るという最大限の結果をもたらしてくれる、まさにリオネル・メッシのようなコマンドなのです!
(私のPCなんてコマンドでmessiと入力するとrobocopyが実行されるようにしているんですから!)

では、改修後のスクリプトを見てみます。

ECHO OFF
ECHO;
ECHO F:が対象のドライブであるか確認します。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
F:
SET filename="これはバックアップ用ドライブです.txt"
ECHO 「F:\%filename%」が存在するか確認します。。。
TIMEOUT /T 3 /NOBREAK > NUL
IF EXIST %filename% GOTO RM
ECHO %filename%が見つかりません!F:が対象ドライブではない可能性があります。
ECHO 「F:\%filename%」を作成してから再実行してください。
pause
EXIT

:RM
ECHO F:が対象のドライブであることを確認しました。
TIMEOUT /T 3 /NOBREAK > NUL
ECHO;
ECHO 10秒後にミラーリングを開始します。
TIMEOUT /T 10

ROBOCOPY "K:\Users\ahoman\AppData\Local\Evernote\Evernote" "F:\backup\Evernote" /MIR

ROBOCOPY "K:\仕事のファイル" "F:\backup\仕事のファイル" /MIR

ROBOCOPY "K:\ユーザー\ahoman" "F:\backup\ユーザー\ahoman" /MIR

一部のみの改修ですが、バックアップ時間がかなり短縮しました。
これまでは「あ、実家に帰ろ!」と突発的に思っても、バックアップに半日かかるので、結局バックアップをせず、故に事業継続性に不安がある状態が続いており、つまりテポドンの危機に少しだけ直面していたのですが、これからは帰省の支度をしている間にバックアップが完了するということになります。(普段から頻繁にミラーリングバックアップをしておけば、帰省直前のバックアップにかかる時間は更に短縮されますね!ま、面倒なのでしませんけど!w)

ペイントで画像の中のカラーコードを調べる方法

[ペイント] 画像やウェブサイト上の特定色のカラーコードを調べる方法

画像の中の、特定部分の(16進数)カラーコードが知りたい場合は、Windowsに標準でインストールされている「ペイント」で調べることが可能です。

画像ではなく、ウェブサイト上のカラーコードを調べる場合は、ウェブページのスクリーンショットを取って調べることができます。
Surface Pro 3でスクリーンショットを撮る方法

まず、調べたい画像を準備します。
今回はこちらの画像を準備してみました。
ペイントで画像の中のカラーコードを調べる方法

この画像の中の赤丸の部分のカラーコードを調べてみたいと思います。
ペイントで画像の中のカラーコードを調べる方法_step1

画像をペイントで開きます。
カラーコードを調べたい画像をペイントで開く

[ツール]の中の[色の選択]をクリックし、カラーコードを調べたい部分をクリックします。
[ツール]の[色の選択]をクリックし、調べたい色をクリック

クリックした部分の色が表示されます。
選択した色が表示されます

[色の編集]をクリックします。
[色の編集]をクリックします

カラーコードを10進数の表した数値が確認できます。
この場合、赤(R):103、緑(G):150 青(B):184です。
カラーを10進数で表した数値です

10進数の
[赤(R):103、緑(G):150 青(B):184]、
を、16進数に変換すると、
[赤(R):67、緑(G):96 青(B):B8]
になります。
(※16進数とは、0~9とA~Fで表す数値です。)

16進数に変換した数値をつなげます。

[#6796B8]

これが16進数のカラーコードになります。

■カラーコード変換ツール
http://iroempitsu.net/zukan/tl-hexdec.htm
http://syncer.jp/color-converter

ペイントでモザイク(ぼかし)をかける方法

ペイントで一部にモザイクをかける(ぼかす)方法

ペイントにはモザイクやぼかしの機能がありません。

そこで、「サイズ変更」の機能を使ってモザイクをかけてみます。

1. モザイクをかけたい部分を選択する。
ペイントでモザイクを掛ける

2. 「サイズ変更」をクリックし、「パーセント」、「縦横比を維持する」にチェックを入れ、水平方向・垂直方向を「20」にし、OKをクリックする。
ペイントでモザイクをかける

3. 選択部分が小さくなったら、選択を解除しないで、もう一度「サイズ変更」をクリックする。
ペイントでモザイクをかける

4. 「パーセント」、「縦横比を維持する」にチェックを入れ、水平方向・垂直方向を「500」にし、OKをクリックする。
ペイントでモザイク(ぼかし)をかける方法

5. 完成です!
ペイントでモザイク(ぼかし)をかける方法

★ 縮小するパーセントの数値を変更することで、モザイクの細かさを設定できます。

ショートカット キー

[Windows 8 / 8.1] 覚えて便利なショートカット キー ベスト20!

Windows 8 / 8.1 で便利なショートカットキーを、よく使われる一般的なものも含めて紹介します。

※ 表記の読み方は、Shift + Tab は Shift キーを押しながら Tab キーを押すという意味です。

キー操作 機能
Windows ロゴ キー スタート画面を表示または非表示にする
Windows ロゴ キー + C チャームを開く
Windows ロゴ キー + C ファイルを検索する
Windows ロゴ キー + Q アプリを検索する
Alt + F4 アクティブな項目を閉じる。またはアクティブなアプリを終了する
Alt + Esc (デスクトップ画面で)項目を開かれた順序で順番に切り替える
Windows ロゴ キー + Tab 使用中のアプリ (デスクトップ アプリを除く) を順番に切り替える
Windows ロゴ キー + ↑ デスクトップ ウィンドウを最大化する
Windows ロゴ キー + ↓ デスクトップ ウィンドウを最小化する
Windows ロゴ キー + ← 画面の左側にデスクトップ ウィンドウを最大化する
Windows ロゴ キー + → 画面の右側にデスクトップ ウィンドウを最大化する
Alt + Tab 使用中のアプリを切り替える
Ctrl+Tab 次のタブに移動する(ブラウザのタブ切り替えにも使用可能)
Ctrl+Tab (ブラウザの)タブを閉じる
Ctrl + A ドキュメントまたはウィンドウのすべての項目を選択する
Ctrl + X 選択した項目を切り取る
Ctrl + C (または Ctrl + Ins) 選択した項目をコピーする
Ctrl + Y 操作をやり直す
Ctrl + Z 操作を元に戻す(undo)
Shift + Del (ごみ箱に移動せずに)選択した項目を完全に削除する
Ctrl + R (または F5) 作業中のウィンドウを最新の情報に更新する
Windows ロゴ キー + P プレゼンテーション表示モードを選択する

cron登録数1個で複数の間隔で実行する方法

レンタルサーバーによってはcronの登録数は1つだけー!みたいなのもよくありますが

実行したいスクリプトを呼び出す役割のcron用スクリプトを書けば複数の間隔で複数のスクリプトを実行することができます。

例えば、cronに登録するスクリプトを「cron.php」とかにした場合。この「cron.php」はサーバーが許す一番最小実行間隔で実行するとします。(例えば1分ごと)

これで「cron.php」は1分毎に実行されるので、あとはその中で条件分岐させて色んなタイミングでいろんなスクリプトを呼び出せばOKです。

例えば10分毎に一回実行したスクリプトがあるときは

switch(date('i')%10) {
 case 0:
  include(/home/xxxx/xxx/xxxx/oppai.php);
  break;
 case 1:
  ・・・・・・
  break;
}

の様に書きます。呼び出すスクリプトが大量にある場合は上記のようにswitch文でも使って実行時間をうまく分散させるのがレンタルサーバー様に嫌われないコツです。

▼うまく分散させる振り分けのサンプル
・毎分1回実行するもの→そのまま毎分実行させる(しかない。分散のしようがない)。
・10分毎に1回実行するもの→「分」の下一桁が6,7の時に実行(最大2個に分散できる)
・毎時1回実行するもの→「分」の下一桁が0,1,2,3,4,5の時に実行(最大36個に分散できる)
・1日1回実行するもの→「分」が58 の時に実行(時間毎に振り分ければ最大24個に分散できる)
・毎週1回 実行するもの→毎日2:59に実行(曜日毎に振り分ければ最大7個に分散できる)
※それぞれの間隔で実行したいスクリプトの量によって数字は微調整すればよい。

 

レストランが作るこだわりの逸品から会議弁当やピザチェーンまで、出前・宅配の総合グルメサイト『ぐるなびデリバリー』

Yahooアカウントのパスワードを変更する方法

Yahoo! JAPAN IDのパスワード変更で躓いた。

パスワードを変更しようとすると
「登録情報から推測されにくいパスワードを入力してください。」
と怒られた。

例えば、登録情報の氏名を
氏:ta
名:na
と登録しているとする。

そして、現在のパスワードが「passworddesu」だとして、
新しいパスワードを「tapassworddesu」にしようとしても怒られる。
新しいパスワードの方が文字を足して長くなっている・・・・にも関わらずである。
氏の「ta」が含まれるからなのだとは思うが、チェックが厳しいwww
まぁ、実際には「ta」なんていう短い氏名の人はいないだろうからそこまで問題にならないかもしれないが
覚えやすいようにパスワードに名前を入れている人もいると思う。(良いことではないが)

では、仮に「ta」さんがパスワードを「tapassworddesu」に設定したい場合はどうすれば良いのか・・・

そう。
一時的に氏名を変更すれば可能である。(2011.7現在のYahooのシステムでは)

具体的には、一時的に
氏「ta」を「unko」にすれば良い。
「unko」が嫌なら「chinko」にすれば良い。

ただし、もちろんその場合は「taunkopassword」または「tachinkopassword」というパスワードの設定はできない。

あえて説明を複雑にしたが、そうゆう感じでパスワードを変更して、
その後、氏を「ta」に戻せば良い。

もちろんYahoo様はその方法を推奨はしていない。

ブラウザにキャッシュさせない設定

更新頻度の高いページなどではブラウザにデータをキャッシュされては都合が悪い。

ということで、metaタグに以下を設定してキャッシュさせないようにする。

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

もちろん、実際にキャッシュをしないかどうかは、各ブラウザの解釈に依存する。

【上記タグの解説】
一行目と二行目

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">

は、どちらもブラウザに対してページキャッシュを無効にする設定。
※一行目は古いブラウザのために未だ残されているコードと思っておけば良いか。

上記だけではキャッシュが無効にならない場合(なんちゅうブラウザなんだ!)、
キャッシュの有効期限を指定することでキャッシュ情報を消去させる方法が、
三行目

<meta http-equiv="expires" content="0">

さらにキャッシュの有効期限を0秒に指定している。
例えば content=”3600″ と指定すれば、一時間キャッシュすることになる。

Microformats(マイクロフォーマット)とは?

▼Microformats
http://microformats.org/

▼Microformats(日本語ページ)
http://microformats.org/wiki/ja

マイクロフォーマットとは、HTML(XHTML)において、記載されている情報が何の情報を表しているのかマークアップするものである。

例えば、WEBページ内の連絡先情報をhCardという連絡先情報を記載するとき仕様を使ってマークアップすると、

<div class="vcard">
  <div class="fn">ヤマダ タロウ</div>
  <div class="org">株式会社◯◯</div>
  <div class="tel">090-0000-xxxx</div>
  <a class="url" href="http://example.com/">http://example.com/</a>
</div> 

このように仕様に従って記載すると、対応したアプリケーションなどで表示したり、情報を抽出されたりすることができます。

HTTPリダイレクト

HTTPにおけるサーバからの応答の種類の一つで、URLが変更されたことをクライアント側に知らせる機能。

HTTPリダイレクト用のコードは以下の2つ
「301 Moved Permanently」・・・ページが完全に引っ越した
「302 Moved Temporarily」・・・ページが一時的に別の場所に用意されている
※302はHTTP 1.1では307に変更

metaタグやスクリプトでのリダイレクトは、HTTPリダイレクトではない。

HTTPリダイレクトはSEOにも良い。
例えば、検索エンジンのロボットがクロールして301を受け取るとページが引っ越したのだと解釈できる。

【.htaccessでのHTTPリダイレクト例】
http://aaa.example.com/以下のディレクトリからhttp://bbb.example.com/にリダイレクトしたい場合、
.htaccessというファイルを作成し

Redirect permanent / http://bbb.example.com/

と一行記述してhttp://aaa.example.com/にアップロードする。