Linux の rsync によるバックアップシステムを、そのまま Windows に利用したい。
まず、一度再起動する。 今度は /etc/init.d/vmware-tools から /usr/sbin/vmware-guestd が 起動されていることを確認する。また、ホスト OS との共有に用いる モジュール "vmhgfs" が呼ばれているか、sudo lsmod で確認する。
一度ゲスト OS を停止し、VMWare の「仮想マシンの編集」の「オプション」タブ の「共有フォルダ」から、「追加」を選択することでマウントするフォルダを 選択することができる。
ここで設定されたフォルダは、Linux 内の
/mnt/hgfs
以下にマウントされる。(「名前」で付けられたものが、ディレクトリ名となる)。
ただし、この方法の問題点として、
((* 日本語が化ける *))
という問題がある。マウント時のオプション指定をどこですればよいのか よく分からないため、解決できず。(将来のバージョンアップで解決 されることを期待…)。
どーしても解決したい場合は、Linux を UTF-8 対応にする方法もあるが…。
…とそんなことになってしまったので、Windows ファイルを Linux から バックアップ等するのは、Windows のファイル共有と Linux の Samba クライアントの利用によることにした。
詳しくは Windows ファイル共有と Linux の Samba クライアントによる共有 を参照のこと。
しょうがないので、Windows でファイル共有し、それを Linux 側から Samba で読むようにする。 ただし、この際の要望として、
というものがある。
初期状態だと、共有したフォルダは誰からも見えるという極めて 便利で極めてアンセキュアな状態になっているので、アクセス制限 を行えるようにする。(ただし、XP で共有フォルダを利用するには 「SERVERサービス」が開始されている必要がある。詳しくは 共有フォルダが設定できない・接続できないときには を 参照せよ)。
次に、各フォルダを共有できるようにする。
まず、<URL:http://homepage2.nifty.com/winfaq/networkchecklist.html> を確認せよ。
また、もしも以下のようなメッセージが表示された場合には、 「SERVER サービス」が停止している可能性がある。 「スタート」→「ファイル名を指定して実行」で、"SERVICES.MSC"と入力し、 OKして「サービス」を起動する。そこで「Server」サービスが開始されているか 確認する。もしも開始していない場合は右クリックで「開始」を選択して サービスを開始する。
****** を共有しようとする時にエラーが発生しました。 サーバー サービスが開始されていません。 今回は共有リソースは作成されませんでした。
上記の共有設定の画面の一番下に「Windows ファイアフォールの 設定を表示します」というリンクがあるのでクリックする。
ここでは、以下のように設定を行う。
「サービス」タブの「追加」をクリックし、ファイルの共有に 必要なポートのみを開ける。サービス設定には、以下の4つを 設定すれば良い。(不要なものもあるかもしれない)。
※ 上の2つは「UDP」であることに注意。
サービスの説明 コンピュータ名 外部ポート番号 内部〃 TCP/UDP =============================================================== UDP 137 shadow 137 137 UDP UDP 138 shadow 138 138 UDP TCP 139 shadow 139 139 TCP TCP 445 shadow 445 445 TCP ===============================================================
これら4つのサービスを追加したら、それらにチェックをつける。
一応上記の Windows ファイアウォールによる設定で十分ではあるが、 なんらかのファイアウォールソフトでもアクセスを制限しておくと より安心である。ここではフリー版もあり、最近は結構機能が 充実している ZoneAlarm を 用いる。実際には、「ZoneAlarm のコントロールセンター」を表示し、 「ファイアウォール」の「ゾーン」において、VMware のネットワーク のゾーンを「トラスト」にし、その他を「インターネット」にすればよい。
次に、上記の設定で VMWare 内からのみアクセスできるようになった フォルダをマウントする方法を記す。
アクセスには Samba を用いるので、まず smbfs をカーネルが認識 する必要がある。よって、もしもカーネルが smbfs を認識していない ならば、カーネルを再構築すること。ただし、ここではカーネル再構築 の詳細に関しては触れない。詳しくは <URL:http://www.ep.sci.hokudai.ac.jp/~morikawa/memo/vmware_samba.txt> などを参照のこと。
次に、smbfs パッケージをインストールする。クライントとして Samba を利用するなら smbclient もインストールしておけば良いが、 以下では smbfs としてマウントしてしまい、あとは Linux のユーティリティ で共有フォルダ内を操作する。
smbfs をマウントする場合は以下のようにする。
# mount -t smbfs -o username=morikawa,uid=morikawa,gid=morikawa,rw,\ iocharset=euc-jp,codepage=cp932,fmask=664,dmask=775 \ //code/'My Documents' /mnt
(見易さのため、上記のように記述したが、一行目の gid=morikawa,
と二行目の iocharset=euc-jp
の間に空白やタブを挟んでは
ならない。)
-o
の次に続く文字列 (区切りはカンマ) はオプションである。
username=morikawa
はユーザ名である。
Windows の共有フォルダでアクセスを許可するユーザ名を入力する。
なお、さらに password=XXXXXX
を加えておくと、
パスワードもコマンドラインで入力できる。
なお、この設定がない場合にはプロンプトでパスワードが要求される。
これらユーザ名とパスワードは、あるファイル file
に書き込んでおいて
credentials=file
と指定することもできる。
その際の file
の書式は以下のとおりである。
username = <value> password = <value>
uid=morikawa,gid=morikawa
を用いることで、マウントした
ディレクトリ以下の UID, GID を明示的に設定することもできる。
mount コマンドは root でしか行うことができないが、これによって
一般ユーザに書き込みを許可することが可能である。
rw
は読み書き可能なようにマウントするという効果がある。
もしも読み込み専用にしたければ、 ro
オプションを
付ける事。
fmask=664,dmask=775
はマウントしたファイルやディレクトリ
のパーミッションを決めるものである。fmask がファイルの、dmask
がディレクトリのパーミッションを決める。
iocharset=euc-jp,codepage=cp932
は文字コードを変換する
ためのオプションである。文字コードが SJIS な Windows のファイルや
フォルダを Linux でも見えるようにするにはこのオプションが必要である。
//code/'My Documents'
はマウント先のコンピュータとフォルダを
指定している。ここでは、共有先のコンピュータが code
共有フォルダ名が My Document
である。
なお、Windows には良く出てくる空白を含むフォルダは
以下のように指定すると良い。
'My Documents' My\ Documents
詳しくは <URL:http://www.samba.gr.jp/project/translation/3.0/htmldocs/smbmount.8.html> を参照のこと。
一般ユーザでもマウントを可能にするように、fstab に記述を行いたかったが、
ファイルタイプとして smbfs を選択すると、オプションは全てそのまま
smbmount に渡されるらしく、一般ユーザがマウントを可能にする users
オプションは指定できない。(強引に記述すると、iocharset や codepage
などが無視され、文字が化けてしまう)。
なお、root でのマウントでよければ、以下のように記述すると良い。 下記では改行しているが、実際には改行しないこと。
//code/My_Documents /home/morikawa/Windows/My_Documents smbfs username=morikawa,rw,uid=morikawa,gid=morikawa,fmask=664,dmask=775,codepage=cp932,iocharset=euc-jp 0 0
My_Documents の部分を書き換えれば、他のディレクトリにも応用可能である。
マウントとバックアップを行うための Ruby スクリプトを作成した。 要求仕様は以下のとおり。
実際に作成したものは以下にある。
上記では code をコンピュータ名とした。これは Windows 側の コンピュータ名であるが、仮に code.ep.sci.hokudai.ac.jp などの ホストが DNS から取得できてしまうと、それに対応付けられた IP アドレス へアクセスを試みてしまう。IP アドレスによる指定も可能であるが、 その際には Warning が表示されてしまう。解決するには /etc/samba/lmhosts にホスト名と IP アドレスの対応表を 書いておく。こちらは DNS の対応表よりも優先される。 例えば、 code が 192.168.8.1 である場合には、以下のように記述する。
# # Samba lmhosts file. # 192.168.8.1 CODE
以外でバックアップしておきたいもの (コピーなどの手間は できるだけ省いて)
IME の辞書ファイル
C:\Documents and Settings\morikawa\Application Data\Microsoft\IMJP8_1\imjp81u.dic
シンボリックリンクを張ると、imjp81u.dic.lnk というファイルになってしまい、 実質的にコピーできないので、直接 C:\Documents and Settings\morikawa\Application Data\Microsoft\IMJP8_1 ディレクトリを共有可能にする。
インストーラ群
C:\Install_Files
Free で設定ファイルに設定を残してくれるプログラム群
C:\Free_Program
自分のドキュメント置き場
C:\Documents and Settings\morikawa\My Documents
Last Updated: 2006/10/02, Since: 2005/03/20 | mailto: |