綾小路龍之介の素人思考

Windows > robocopyでフォルダ間同期

同期を取るソフトはたくさんありますが、コマンドラインで動いてくれるソフトを探したらこいつが引っかかりました。まだあまり使い込んでいませんが、ミラーリングなどはもちろんインクリメンタルバックアップもできるようです。Linuxではバックアップにrsyncを使っていて満足していましたが、robocopyはネットワークのディレクトリとかもOKだそうで、rsyncといい勝負していると思います。

目次

robocopyのインストール

robocopyはmicrosoft windows XP/2000 では動くようです。XPのリソースキットに含まれるそうなのでダウンロードしてインストールしておきます。

| +-LOCAL----+      +-LOCAL----+
| |          |      |          |
| |   01.txt |      | +--------+-+
| |   02.txt |      | | 01.txt | |
| | +--------+-+    | | 02.txt | |
| | | 03.txt | | -> | | 03.txt | |
| +-+--------+ |    | | 04.txt | |
|   | 04.txt   |    | | 05.txt | |
|   | 05.txt   |    +-+--------+ |
|   |          |      |          |
|   +---REMOTE-+      +---REMOTE-+

[Cygwin] Cygwinっていいですね

Linuxでネットに出る時、ネットサーフィンする時、w3mをつかう。やっぱり、ネットに書き込みする時とか最高なんだよね。w3mはtextareaに書き込むときvimを起動してくれる。これが最高たる所以だ。いつも使っているエディタを使えること、Windowsには無いところだよな。そりゃあWindowsにもtextareaの内容をエディタに移して、エディタで編集して、保存して終了すると、内容がtextareaに書き戻される、ということをやってくれるソフトがある。でも、その機能のためだけに導入するとか面倒だし、ぼくがいつも使なれてるOperaだとできないと思った。Linuxではブラウザ関係はOperaとdilloとw3mを装備して、それぞれに使い分けている。こういうことがWindowsでもできれば最高だ。ということで、Windowsでw3mが使えてvimが使えて日本語入力ができる、という条件を満足する何か。Cygwinである。

w3m、vim、screen、rxvt、opensshは必要。これらのうち、rxvt以外は最新版をインストールしてもよさそう。rxvtだけはcygwin JEの物を使う。

[setup.exe] ネットワークインストールプログラムのダウンロードから導入まで

http://www.cygwin.com/から最新のsetup.exeをダウンロードする。で、起動。パッケージを選択する前に、パッケージを配布しているサイトを選択するところがある。そこに、http://cygwin-je.sourceforge.jpを追加して、これとこれ以外のどれか1つたとえばhttp://ftp.jaist.ac.jpをCtrlキーを押しながら選択して、次に進む。パッケージ選択場面では最低限のパッケージが選択されているので、極力余分な事はしない。でも、rxvtだけは導入しておく。ただし、最新版ではなくパッケージ名にjが入ったものを選択しておく。

[vim]

.bashrcに次の内容を追加するか、コメントアウトされていたならコメントアウトを外す

export LANG=ja_JP.SJIS
export TZ=JST-9
export JLESSCHARSET=japanese-sjis
alias ls='ls --show-control-chars'

.inputrcに次の内容を追加するか、コメントアウトされていたならコメントアウトを外す

set meta-flag on
set convert-meta off
set output-meta on
set kanji-code sjis

.vimrcに次の内容を追加するか、コメントアウトされていたならコメントアウトを外す

set encoding=japan
set fileencodings=iso-2002-jp,utf-8,euc-jp,cp932

[w3m]

特にしたことは無かったと思う。

[rxvt]

次のようにして起動、とここまで書いて気づいた。こぴぺできねぇ。だめじゃん。ということで中途半端に終了。やっぱりputtyでSSHで家サーバに行った方が早いということに気づいてしまった。ガーン。

とおもったらできた。Shift+Insで出来た。ついでに続きをコピペしておこう。起動は下のような感じ。

C:\cygwin\bin\rxvt.exe -fg white -bg black -fn msgothic-16 -fm msgothic-16 -km sjis -e ./bash.exe --login -i

[ssh] VineSSHサーバにつなぎにいくと文字化け

前提として、クライアント側の設定をメモっておこう。CygwinのOpenSSH、Cygwin JEのrxvtを使った。まずは文字化けを気にしないでVineにつなぎにいく。

hoge@cygwin$ ssh hage@vine

認証が終わって、プロンプトが表示されたらSSHサーバが送ってくる文字のコードを確認する。

hage@vine$ env | grep LANG

出力の結果を見て、eucJPだとわかる。サーバの送ってくる文字をクライアントが受け取って、クライアントが画面に表示するまでに、正しく文字コードの認識が行われないことで、文字化けが起きる。LANGの確認が終わったらログアウトしておく。

hage@vine$ exit

クライアント側の設定を行う。クライアントはサーバからデータを受け取るが、データを区別して受け取るわけではない。あくまで、人間様が表示された内容を見て、これは「あ」で、これは「い」だと区別しているわけだ。だから、受け取ったデータの文字コードを正しく判別してデータを正しい文字コードで表示しなければいけない。

いま、サーバが送り出すデータの文字コードがわかったので、つぎはクライアントが受け取ったデータを表示する文字コードの確認を行う。この2つの文字コードが異なっていると文字化けする。

hoge@cygwin$ env | grep LANG

今度は、SJISだった。SSHサーバがSSHクライアントに送り出すデータの文字コードと(SSHクライアントが仮想ターミナルに送り出すデータ、この間に文字コード変換は行われない)、仮想ターミナルが人間に送り出すデータの文字コードが違っていたため、文字化けが起きたことになる。

どこかの過程で、正しく文字コードの変換を行うか、送出側の文字コードをSJISにするか、表示側の文字コードをEUCJPにするか、すればOKである。ここでは、文字コードの変換をおこなうことにする。その理由は、送出側の文字コードや表示側の文字コードを変えることは、たとえば、新規作成ファイルの文字コードを変えてしまったり、日本語ファイルのファイル名の文字コードを変えてしまったり、する可能性があるからだ。

では接続してみようと思う

hoge@cygwin$ ssh hage@vine | nkf --sjis -u

こうすることで、SSHクライアントは受け取ったデータを仮想ターミナルに渡す前に、nkfに渡す。nkfは受け取ったデータの文字コードをsjisに変換して仮想ターミナルに渡すので、仮想ターミナルは受け取ったデータをsjisと思って表示し、人間はこれを理解できる。こいういう寸法だ。

+------------+
| SSH Server |-----+
+------------+     |
                 +-------------------+
                 |  euc decoded data |
                 +-------------------+
                   |
+------------------|-------+
|                  |       |
|            +-----------+ |
| SSH Criant | Do nothig | |
|            +-----------+ |
|                  |       |
+------------------|-------+
                   |
                 +-------------------+
                 |  euc decoded data |
                 +-------------------+
                   |
+------------------|-------+
|                  |       |
|            +-----------+ |
| nkf        | Convert   | |
|            | euc->sjis | |
|            +-----------+ |
|                  |       |
+------------------|-------+
                   |
                 +-------------------+
                 | sjis decoded data |
                 +-------------------+
                   |
+------------------|-------+
|                  |       |
|            +-----------+ |
| Terminal   | Translate | |
|            | data->font| |
|            +-----------+ |
|                  |       |
+------------------|-------+
                   |
                 +-------------------------+
                 | Human recognizable font |
                 +-------------------------+
                   |
+------------+     |
| Human      |-----+
+------------+

[AutoHotoKey] キーボードでマウス操作

最高にクールなツールかもしれない。今まで、キーボードでマウスを操作するためのソフトウェアをいくつか試してきたが、これは僕の基準を完璧にクリアしているような気がした。

世の中のキーボード入れ替えのソフトは2つに分けられるそうな。スキャンコードと仮想コードの対応関係を変更するもの、仮想コードと機能の対応関係を変更するものだ。AutoHotKeyは後者に分類される。いわゆる常駐が必要なソフトはスキャンコードから仮想コードに対応付けられたあとに機能を変更するので、常駐が必要で。レジストリの仮想コードとスキャンコードの対応関係を変更するやつは常駐が必要ない。

せっかくだから、設定ファイルを晒しておこう。今の問題は、この設定をどうやって共有するかだ。ユーザ単位でどうやって共有するかが問題だ。

;#InstallKeybdHook
sc07B::LWIN
sc070::APPSKEY
#sc025::MouseMove,0,-10,0,R
#sc024::MouseMove,0,10,0,R
#sc023::MouseMove,-10,0,0,R
#sc026::MouseMove,10,0,0,R
#sc039::MouseClick,left,,,1,0,D,
sc16A::MouseClick,WheelUp,,,,,
sc169::MouseClick,WheelDown,,,,,

高速ファイルコピーと移動

ファイルを移動やコピーのときに、explorerのコピーとか移動とかでは時間がかかる場合がある。どのような場合に早くてどのような場合に遅いのかぼくは良くわからないのだけれど、そういうところひっくるめてツールにお任せしてしまうと良いかもしれない。Fire File Copyはそのためのツールの一つ。このツールを使うと、ローカルHDDからネットワーク越しのHDDへの移動のスピードが2倍くらいになった。ちょっとうれしい。また、ベリファイ機能も付いているようなので移動前と移動後で内容が変化していないかどうかをチェックできそうな感じ。

  1. A-1 DRIVE -Software / Fire File Copy

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2003-10-21T00:32:13+09:00
  2. Modified: 2003-10-21T13:43:14+09:00
  3. Generated: 2017-07-09T23:09:23+09:00