卒論生のためのバックアップ講座

はじめに_

このページでは、ファイル共有ソフトウェアUnisonか、あるいはファイル管理ソフトSubversionを用いて、論文やプログラムのソースファイル、あるいは実験のデータなどをバックアップする方法について説明する。

卒論生のためにと書いてあるけれども、程研究室の学生は基本的に全員この方法でバックアップを取ってほしい。理由は以下のとおり。

  1. 不慮の事故に備えるため
  2. もし、卒業時に論文やプログラムのソースファイル、実験のデータなどを提出し忘れた、あるいは提出時になんらかの失敗があって提出ファイルが壊れていた場合に最悪でも作業中のファイルを後輩が取得できるため

何をいつどのようにバックアップすべきか?_

研究室の方針としては、研究に関するすべてのファイルのバックアップをとってほしい。少なくとも以下のファイルのバックアップはとっておいて欲しい。

  • 卒業論文に関するファイル
    • TeXのソースファイル
    • 画像ファイル
    • bibファイル(参考文献ファイル)
  • 発表資料のスライド(程研究室だとPowerPoint)
    • 中間発表のスライド
    • ゼミでの発表スライド
    • 本発表のスライド
  • 作成したプログラムなど
    • ソースコード
    • 入力データ、出力データ(出力に時間がかからないのであれば入力データだけで良い)
    • その他実装の際のメモ
  • 参考資料の電子ファイルなど

最低限必要なのは、みなさんが卒業後に誰かが研究を引き継ぐことができるに足るデータ を残して欲しい。

論文のソースファイルやプログラムのソースコードは、差分バックアップをし、いつの時点にも戻れるようにした方が良い。なぜならば、ある時点では削除しようと考えていたものが、別の時点では再び使いたいということが頻繁にあるためである。

たとえば、卒論に関するファイルのディレクトリ構成を以下のようにしてみても良い。

~/WorkSpace
  |- Goto_Soturon07
     |- Goto_Soturon07.tex
     |- Goto.bib
     |- eps/ eps形式の画像を格納するディレクトリ
     |- obj/ Tgifで画像を作成するときのobjファイルを置くディレクトリ
     |- prog/ プログラムのソースコードを置くディレクトリ
     |- ppt/ パワーポイントを置いておくディレクトリ
     |- ref/ 参考とした論文などを置いておくディレクトリ
     |- memo/ その他メモを置いておくディレクトリ

このようにすれば、~/WorkSpace/Goto_Soturon07以下をバックアップしておけば、卒業研究に関するファイルのバックアップし忘れがなくなる。

バックアップのタイミングは以下のようになる。

  • その日の作業の始め
  • 作業を中断するとき(お茶飲み、トイレ、昼食など)
  • ファイルの中身を大幅に修正するとき(修正後に気が代わっても復帰できる)
  • その日の作業の終わり

特に差分バックアップをとっておけば、作業の任意の時点に戻れるので、修正も気軽に行うことができる(気が変われば戻れば良い)。

UnisonとSubversionのどちらを使うべきか?_

Unisonを使うのが簡単。もっと読む

Gitを使う(2013年4月19日)_

研究室のファイルサーバにGitをインストールしたのでGitを使ってバックアップしてもよい。

前提_

ファイアーウォール内の環境

[ ClientMachine ] <---> [ FileServer ]

ファイアーウォール外の環境

[ ClientMachine ] <----> [ SshServer ] <----> [ FileServer ] 

ClientMachineが自分のPC、SshServerはファイアーウォール内にあり、かつ、外部からSSHでログインできるサーバ、FileServerは、ファイルをバックアップするためのサーバである。FileServerにもSSHでログインできることとする。

考えなければならないのはファイアウォールの外のマシンでバックアップをとるのか、それとも中のマシンでバックアップをとるのか。自分の使うマシンのOSはWindowsなのか、Linux/Unixなのか。さらにいえば、Unisonを使うのか、Subversionを使うのか?

大まかに分けて以下の4つの

  • ファイアーウォールの外のWindowsマシンでバックアップをとる場合
  • ファイアーウォールの内のWindowsマシンでバックアップをとる場合
  • ファイアーウォールの外のLinux/Unixマシンでバックアップをとる場合
  • ファイアーウォールの内のLinux/Unixマシンでバックアップをとる場合

程研究室の場合は、自宅やノートPCからファイルサーバにバックアップをとりたい場合は、ファイアーウォールの外からのバックアップ方法で環境を構築する。研究室内のマシンからファイルサーバにバックアップをとりたいならば、ファイアーウォール内からのバックアップ方法で環境を構築する。

ファイアーウォールの外のWindowsマシンでバックアップをとる場合_

Unisonを使う場合_

FileServer側での準備_

Unisonで同期をとるディレクトリを作る。

% cd ~/
% mkdir WorkSpace
% mkdir WorkSpace/UNI

ClientMachineの準備_

ClientMachineにC:\WorkSpace\UNIというフォルダをつくり、そのフォルダ以下にUnisonで管理するファイルが格納されるようにする。

ClientMachineからのputtyによるSSHログイン_

まず、Puttyをダウンロードする。

「Download」をクリックし(日本のミラーがないため)「For Intel x86 putty.zip」をダウンロードする。必ずputty.zipをダウンロードすること(putty.zipは二つあるが上の方のIntel x86用のputty.zipをダウンロードする)。

ダウンロードしたら解凍して、そのフォルダをC:\puttyとして置く。

日本語化がしたい人は、hdk の自作ソフトの紹介から、executable files (PuTTY version 0.58 にパッチをあてた実行ファイル puttyjp.exe)をダウンロードし、C:\puttyに置く。

続いて、公開鍵をC:\putty/Puttygen.exeで作成する。

Puttyのインストールから鍵の作成まで、大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用についてによくまとめられているのでここを参考に鍵を作成する。なお、パスフレーズは空にせず必ずいれること。

作成した公開鍵をFileServerとSshServerに転送する。本来ならば物理的手段(フロッピーディスクやCD-ROMなど)でFileServerとSshServerに渡すべきであるが、ここは不精をしてWinSCPで渡せば比較的安全である(WinSCPのインストールについて読む)。

無事、公開鍵をFileServerとSshServerに転送できたら、ホームディレクトリ~/で以下のことを行う。

もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、転送してきたPuttygen.exeで作った公開鍵(putty.pubというファイル名とする)をOpenSSHで使用できる公開鍵形式に変換し、~/.ssh/authorized_keysに付け加える。

% ssh-keygen -i -f putty.pub >> ~/.ssh/authorized_keys

これで、以後はファイアーウォール内のClientMachineからFileServerとSshServerに公開鍵ログインができる。

Puttyを用いた公開鍵ログインのやり方については大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用について:Puttyの起動を参考のこと。

Puttyでポートフォーワード。_

まず、ポートフォーワードの設定をする。

まず、ClientMachineから、SshServerまでのアクセスを設定し、その後ClientMachineからFileServerのアクセスを設定する。なお、

  • SshServerのIPアドレス:192.168.1.100
  • FileServerのIPアドレス:192.168.1.200

とする。

この画面で「ホスト名」部分に192.168.1.100を「保存されたセッション」の欄にdesk-top-to-SshServerと打ち込む。打ち込んだら、画面左の「キーボード」をクリックする。

もし、emacsを使うのであれば「Control-H」を選択する。

そうでなければ左側の「外観」をクリックする。

「フォントの設定」で好きなフォントを選ぶ。ディスプレイが大きいのであればフォントは大き目の方が見やすい。

続いて左側の「データ」を選ぶ。

「自動ログインのログイン名」欄にSshServerでのログイン名を入力する。 その後、左側の「認証」をクリック。

「認証のためのプライベートキーファイル」の欄でPuttygen.exeで作成した秘密鍵を選択する。C:\putty以下に.ppkという拡張子のファイルがあるはず。 次に、左側の「トンネル」をクリックする。

「源ポート」の欄に50025を入力し、送り先に192.168.1.200:22を入力する。そして、「追加」をクリックする。

そして、左側の「セッション」をクリックする。

「保存」をクリックする。これで、ClientMachineからSshServerへのアクセス設定終わり。実際にログインできるかどうかを試してみること。

続いて、ClientMachineからFileServerへのアクセス設定をする。

この画面で、先ほど保存した「desktop-to-SshServer」をクリックし、「読込」をクリックする。その後、「ホスト名」の欄にlocalhostと入力し、「ポート」の欄に50025、「保存されたセッション」の欄にFileServerと入力する。

そして、左側の「トンネル」をクリックする。

この画面で「フォワードされたポート」の欄に表示されている「192.168.1.200:22」を選択肢、「削除」を押す。その後、左側の「セッション」をクリックする。

「保存」をクリックする。これで、ClientMachineからFileServerへのアクセス設定終わり。

ポートフォワードの確認_

ポートフォワードを行う場合には、以下のようにする。 pagent.exeを立ち上げた後にアイコンを右クリックし、「Add keys」で秘密鍵を選択&パスフレーズを入力する。同じくアイコンを右クリックし「Saved Sessions」から「desktop-to-SshServer」を選択、起動する。

その後、pagent.exeのアイコンを右クリックし、「FileServer」を選択する。うまく接続できていればポートフォワードは成功。

ClientMachineへのUnisonのインストール_

Unisonの説明は、ハチハチイチナナイチ - Unisonマニュアル私的日本語訳を参照のこと。

次にUnisonのWindowsバイナリバージョンをダウンロードする。Unison File Synchronizerのサイトから、Windows Binaryの最新版のGTKバージョンとtextバージョンにダウンロードする。GTKバージョンを使いたいならば、GTKをインストールする必要がある。GTKもダウンロードのページからリンクが張ってある。C:\Program Files\Unisonへ置く。GTK版のショートカットをデスクトップなどに作っておくと便利。

次にWindowsの環境変数を設定する。「マイコンピュータ」→「プロパティ」→「詳細設定 」→「環境変数」で変更する。環境変数UNISONは、unisonの設定ファイルを置く場所を指定、環境変数UNISONLOCALHOSTNAMEは、LocalPCのホスト名(適当でよい)を指定する変数である。

UNISON  C:\.unison
UNISONLOCALHOSTNAME  Hogehoge

GDK版を使いたい場合は同じく環境変数を設定する必要がある。上記のUnisonのバイナリファイルと同じところからダウンロードしたGTKはC:\Program Files\Common Files\GTK\2.0にインストールされるので環境変数(システム環境変数の方に)以下の変数を追加する(「新規」を押す)

GTK_BASEPATH C:\Program Files\Common Files\GTK\2.0

また、システム環境変数のpathに以下を付け加える。(なお、先頭のセミコロンは区切り文字に使う)

;%GTK_BASEPATH%\bin

また、puttyのフォルダにもパスを通しておく必要がある。puttyのバイナリファイルをC:\Program Files\Puttyとして置いている場合は環境変数(システム環境変数の方に)以下の変数を追加する(「新規」を押す)

PUTTY_BASEPATH C:\Program Files\Putty

また、システム環境変数のpathに以下を付け加える。(なお、先頭のセミコロンは区切り文字に使う)

;%PUTTY_BASEPATH%\bin

Unisonを使う_

C:\.unisonの下にdefault.prfを設定する。rootで同期するディレクトリを指定。sshcmdでsshプログラムを指定。servercmdで、FileServerにインストールされているunisonのフルパスを指定する。今回はSSH経由で、FileServerにアクセスするので、片方のrootをssh://ユーザ名@ホスト名/同期ディレクトリのパスを指定する。(注:以下のUSERNAMEはFileServerのログイン名に置き換えること)

root=C:\WorkSpace\UNI
root=ssh://USERNAME@localhost/WorkSpace/UNI
sshcmd=C:\.unison\synch.bat
servercmd=/usr/local/bin/unison
fastcheck=true

次にputtyのplinkを使って、FileServerにアクセスするためのバッチファイルを書く。Unison user MLの記事を真似した。

ここまで設定したら、うまくいくはずなのでこの記事のとおり順番に動作確認する。コマンドプロンプトから、テキスト版unisonを使って確認する。

なお、C:\putty\Pagent.exe経由でSshServerに接続し、トンネルを開けておく。 pagent.exeを立ち上げた後にアイコンを右クリックし、「Add keys」で秘密鍵を選択&パスフレーズを入力する。同じくアイコンを右クリックし「Saved Sessions」から「desktop-to-SshServer」を選択、起動する。

1. On the windows machine, unison is installed and on the path.

c:\> unison -version
unison version 2.17.1

2. I can use plink directly to invoke unison on the linux side.

c:\> plink fdb@... unison -version
unison version 2.17.1

3. unison on windows seems happy enough to use plink to talk to unison on
the linux machine.

c:\> unison -sshcmd plink -version ssh://fdb@leigh.ucon.org
unison version 2.17.1

なお、plink経由で接続する際にはpagentをたちあげておくとパスフレーズの入力が省略できて便利(だから、plinkの-iオプションが不要)。

以上がうまくいったらコマンドプロンプトで以下のコマンドを打ち込む

% unison-2.24.6-win-text.exe

もし、うまくいかなかったら

unison-2.24.6-win-text.exe ssh -debug all

とうちこんで、デバッグ情報をだすこと。

私は特に追加のオプションを使っていないが、オプションをさらに調べたい場合は、以下のサイトを見ること。

GTK版のUnisonを使用するとグラフィカルにUnisonを使用できる。

Subversionを使う場合_

FileServer側での準備_

Subversionでファイル管理をするためにディレクトリを作る。

% cd ~/
% mkdir WorkSpace
% svnadmin create ~/WorkSpace/SVN

ClientMachineの準備_

ClientMachineにC:\WorkSpace\SVNというフォルダをつくり、そのフォルダの下にSubversionで管理するファイルが格納されるようにする。

ClientMachineからのputtyによるSSHログイン_

まず、Puttyをダウンロードする。

「Download」をクリックし(日本のミラーがないため)「For Intel x86 putty.zip」をダウンロードする。必ずputty.zipをダウンロードすること(putty.zipは二つあるが上の方のIntel x86用のputty.zipをダウンロードする)。

ダウンロードしたら解凍して、そのフォルダをC:\puttyとして置く。

日本語化がしたい人は、hdk の自作ソフトの紹介から、executable files (PuTTY version 0.58 にパッチをあてた実行ファイル puttyjp.exe)をダウンロードし、C:\puttyに置く。

続いて、公開鍵をC:\putty/Puttygen.exeで作成する。

Puttyのインストールから鍵の作成まで、大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用についてによくまとめられているのでここを参考に鍵を作成する。なお、パスフレーズは空にせず必ずいれること。

作成した公開鍵をFileServerとSshServerに転送する。本来ならば物理的手段(フロッピーディスクやCD-ROMなど)でFileServerとSshServerに渡すべきであるが、ここは不精をしてWinSCPで渡せば比較的安全である(WinSCPのインストールについて読む)。

無事、公開鍵をFileServerとSshServerに転送できたら、ホームディレクトリ~/で以下のことを行う。

もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、転送してきたPuttygen.exeで作った公開鍵(putty.pubというファイル名とする)をOpenSSHで使用できる公開鍵形式に変換し、~/.ssh/authorized_keysに付け加える。

% ssh-keygen -i -f putty.pub >> ~/.ssh/authorized_keys

これで、以後はファイアーウォール内のClientMachineからFileServerとSshServerに公開鍵ログインができる。

Puttyを用いた公開鍵ログインのやり方については大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用について:Puttyの起動を参考のこと。

Puttyでポートフォーワード。_

まず、ポートフォーワードの設定をする。

まず、ClientMachineから、SshServerまでのアクセスを設定し、その後ClientMachineからFileServerのアクセスを設定する。なお、

  • SshServerのIPアドレス:192.168.1.100
  • FileServerのIPアドレス:192.168.1.200

とする。

この画面で「ホスト名」部分に192.168.1.100を「保存されたセッション」の欄にdesk-top-to-SshServerと打ち込む。打ち込んだら、画面左の「キーボード」をクリックする。

もし、emacsを使うのであれば「Control-H」を選択する。

そうでなければ左側の「外観」をクリックする。

「フォントの設定」で好きなフォントを選ぶ。ディスプレイが大きいのであればフォントは大き目の方が見やすい。

続いて左側の「データ」を選ぶ。

「自動ログインのログイン名」欄にSshServerでのログイン名を入力する。 その後、左側の「認証」をクリック。

「認証のためのプライベートキーファイル」の欄でPuttygen.exeで作成した秘密鍵を選択する。C:\putty以下に.ppkという拡張子のファイルがあるはず。 次に、左側の「トンネル」をクリックする。

「源ポート」の欄に50025を入力し、送り先に192.168.1.200:22を入力する。そして、「追加」をクリックする。

そして、左側の「セッション」をクリックする。

「保存」をクリックする。これで、ClientMachineからSshServerへのアクセス設定終わり。実際にログインできるかどうかを試してみること。

続いて、ClientMachineからFileServerへのアクセス設定をする。

この画面で、先ほど保存した「desktop-to-SshServer」をクリックし、「読込」をクリックする。その後、「ホスト名」の欄にlocalhostと入力し、「ポート」の欄に50025、「保存されたセッション」の欄にFileServerと入力する。

そして、左側の「トンネル」をクリックする。

この画面で「フォワードされたポート」の欄に表示されている「192.168.1.200:22」を選択肢、「削除」を押す。その後、左側の「セッション」をクリックする。

「保存」をクリックする。これで、ClientMachineからFileServerへのアクセス設定終わり。

ポートフォワードの確認_

ポートフォワードを行う場合には、以下のようにする。 pagent.exeを立ち上げた後にアイコンを右クリックし、「Add keys」で秘密鍵を選択&パスフレーズを入力する。同じくアイコンを右クリックし「Saved Sessions」から「desktop-to-SshServer」を選択、起動する。

その後、pagent.exeのアイコンを右クリックし、「FileServer」を選択する。うまく接続できていればポートフォワードは成功。

ClientMachineへのTortoiseSVN(Subversion)のインストール_

以下のページに従いTortoiseSVNをインストール。

インストール後は「設定」→「ネットワーク」と進み、「SSHクライアント」をTortoisePlink.exeにする。

TortoiseSVN(Subversion)を使う_

以下のページに従いTortoiseSVNをインストール。

インストール後は「設定」→「ネットワーク」と進み、「SSHクライアント」をTortoisePlink.exeにする。

実際に使用する前にC:\putty\Pagent.exe経由でSshServerにアクセスしてトンネルを開けておく

そして、C:\WorkSpace\SVN以下に任意のディレクトリを作成しSubversionで管理する。 詳しい使い方はGentoo Side:TortoiseSVNの使い方を参照のこと。

ただし、チェックアウトの際には、svn+ssh://の後ろにFQDN(ホスト名+ドメイン名)の代わりに、先にPuttyで設定した保存されたセッション名であるFileServerを記載すること。

ファイアーウォールの内のWindowsマシンでバックアップをとる場合_

Unisonを使う場合_

FileServer側での準備_

Unisonで同期をとるディレクトリを作る。

% cd ~/
% mkdir WorkSpace
% mkdir WorkSpace/UNI

ClientMachineの準備_

ClientMachineにC:\WorkSpace\UNIというフォルダをつくり、そのフォルダ以下にUnisonで管理するファイルが格納されるようにする。

ClientMachineからのputtyによるSSHログイン_

まず、Puttyをダウンロードする。

「Download」をクリックし(日本のミラーがないため)「For Intel x86 putty.zip」をダウンロードする。必ずputty.zipをダウンロードすること(putty.zipは二つあるが上の方のIntel x86用のputty.zipをダウンロードする)。

ダウンロードしたら解凍して、そのフォルダをC:\puttyとして置く。

日本語化がしたい人は、hdk の自作ソフトの紹介から、executable files (PuTTY version 0.58 にパッチをあてた実行ファイル puttyjp.exe)をダウンロードし、C:\puttyに置く。

続いて、公開鍵をC:\putty/Puttygen.exeで作成する。

Puttyのインストールから鍵の作成まで、大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用についてによくまとめられているのでここを参考に鍵を作成する。なお、パスフレーズは空にせず必ずいれること。

作成した公開鍵をFileServerとSshServerに転送する。本来ならば物理的手段(フロッピーディスクやCD-ROMなど)でFileServerとSshServerに渡すべきであるが、ここは不精をしてWinSCPで渡せば比較的安全である(WinSCPのインストールについて読む)。

無事、公開鍵をFileServerとSshServerに転送できたら、ホームディレクトリ~/で以下のことを行う。

もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、転送してきたPuttygen.exeで作った公開鍵(putty.pubというファイル名とする)をOpenSSHで使用できる公開鍵形式に変換し、~/.ssh/authorized_keysに付け加える。

% ssh-keygen -i -f putty.pub >> ~/.ssh/authorized_keys

これで、以後はファイアーウォール内のClientMachineからFileServerとSshServerに公開鍵ログインができる。

Puttyを用いた公開鍵ログインのやり方については大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用について:Puttyの起動を参考のこと。

pagent.exeを用いたアクセス_

C:\putty\Pagent.exeを起動する(デスクトップにショートカットを作るか、起動時に動かすようにしておくと便利)「Add keys」で秘密鍵を選択&パスフレーズを入力する。こうしておくと、他のSSH利用のアプリケーション(Unison、WinSCP、Subversionなど)でパスフレーズを入力する必要がなくなる。

ClientMachineへのUnisonのインストール_

Unisonの説明は、ハチハチイチナナイチ - Unisonマニュアル私的日本語訳を参照のこと。

次にUnisonのWindowsバイナリバージョンをダウンロードする。Unison File Synchronizerのサイトから、Windows Binaryの最新版のGTKバージョンとtextバージョンにダウンロードする。GTKバージョンを使いたいならば、GTKをインストールする必要がある。

  • unison-2.24.6-win-gtk2.exe
  • unison-2.24.6-win-text.exe

をダウンロードする。両方共バイナリなのでダウンロードしたらC:\Program Files\Unisonへ置く。GTK版のショートカットをデスクトップなどに作っておくと便利。

次にUnisonのWindowsバイナリバージョンをダウンロードする。Unison File Synchronizerのサイトから、Windows Binaryの最新版のGTKバージョンとtextバージョンにダウンロードする。GTKバージョンを使いたいならば、GTKをインストールする必要がある。GTKもダウンロードのページからリンクが張ってある。C:\Program Files\Unisonへ置く。GTK版のショートカットをデスクトップなどに作っておくと便利。

次にWindowsの環境変数を設定する。「マイコンピュータ」→「プロパティ」→「詳細設定 」→「環境変数」で変更する。環境変数UNISONは、unisonの設定ファイルを置く場所を指定、環境変数UNISONLOCALHOSTNAMEは、LocalPCのホスト名(適当でよい)を指定する変数である。

UNISON  C:\.unison
UNISONLOCALHOSTNAME  Hogehoge

GDK版を使いたい場合は同じく環境変数を設定する必要がある。上記のUnisonのバイナリファイルと同じところからダウンロードしたGTKはC:\Program Files\Common Files\GTK\2.0にインストールされるので環境変数(システム環境変数の方に)以下の変数を追加する(「新規」を押す)

GTK_BASEPATH C:\Program Files\Common Files\GTK\2.0

また、システム環境変数のpathに以下を付け加える。(なお、先頭のセミコロンは区切り文字に使う)

;%GTK_BASEPATH%\bin

Unisonを使う_

C:\.unisonの下にdefault.prfを設定する。rootで同期するディレクトリを指定。sshcmdでsshプログラムを指定。servercmdで、FileServerにインストールされているunisonのフルパスを指定する。今回はSSH経由で、FileServerにアクセスするので、片方のrootをssh://ユーザ名@ホスト名/同期ディレクトリのパスを指定する。(注:以下のUSERNAMEはFileServerのログイン名に置き換えること)

FileServerのIPアドレスを192.168.1.200とすると以下のようになる。

root=C:\WorkSpace\UNI
root=ssh://USERNAME@192.168.1.200/WorkSpace/UNI
sshcmd=C:\.unison\synch.bat
servercmd=/usr/local/bin/unison
fastcheck=true

次にputtyのplinkを使って、FileServerにアクセスするためのバッチファイルを書く。Unison user MLの記事を真似した。

ここまで設定したら、うまくいくはずなのでこの記事のとおり順番に動作確認する。コマンドプロンプトから、テキスト版unisonを使って確認する。

1. On the windows machine, unison is installed and on the path.

c:\> unison -version
unison version 2.17.1

2. I can use plink directly to invoke unison on the linux side.

c:\> plink fdb@... unison -version
unison version 2.17.1

3. unison on windows seems happy enough to use plink to talk to unison on
the linux machine.

c:\> unison -sshcmd plink -version ssh://fdb@leigh.ucon.org
unison version 2.17.1

なお、plink経由で接続する際にはpagentをたちあげておくとパスフレーズの入力が省略できて便利(だから、plinkの-iオプションが不要)。

以上がうまくいったらコマンドプロンプトで以下のコマンドを打ち込む

% unison-2.24.6-win-text.exe

もし、うまくいかなかったら

unison-2.24.6-win-text.exe ssh -debug all

とうちこんで、デバッグ情報をだすこと。

私は特に他のオプションを使っていないが、他のオプションが必要な人は以下のサイトを見ること。

GTK版のUnisonを使用するとグラフィカルにUnisonを使用できる。

Subversionを使う場合_

FileServer側での準備_

Subversionでファイル管理をするためにディレクトリを作る。

% cd ~/
% mkdir WorkSpace
% svnadmin create ~/WorkSpace/SVN

ClientMachineの準備_

ClientMachineにC:\WorkSpace\SVNというフォルダをつくり、そのフォルダの下にSubversionで管理するファイルが格納されるようにする。

ClientMachineからのputtyによるSSHログイン_

まず、Puttyをダウンロードする。

「Download」をクリックし(日本のミラーがないため)「For Intel x86 putty.zip」をダウンロードする。必ずputty.zipをダウンロードすること(putty.zipは二つあるが上の方のIntel x86用のputty.zipをダウンロードする)。

ダウンロードしたら解凍して、そのフォルダをC:\puttyとして置く。

日本語化がしたい人は、hdk の自作ソフトの紹介から、executable files (PuTTY version 0.58 にパッチをあてた実行ファイル puttyjp.exe)をダウンロードし、C:\puttyに置く。

続いて、公開鍵をC:\putty/Puttygen.exeで作成する。

Puttyのインストールから鍵の作成まで、大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用についてによくまとめられているのでここを参考に鍵を作成する。なお、パスフレーズは空にせず必ずいれること。

作成した公開鍵をFileServerとSshServerに転送する。本来ならば物理的手段(フロッピーディスクやCD-ROMなど)でFileServerとSshServerに渡すべきであるが、ここは不精をしてWinSCPで渡せば比較的安全である(WinSCPのインストールについて読む)。

無事、公開鍵をFileServerとSshServerに転送できたら、ホームディレクトリ~/で以下のことを行う。

もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、転送してきたPuttygen.exeで作った公開鍵(putty.pubというファイル名とする)をOpenSSHで使用できる公開鍵形式に変換し、~/.ssh/authorized_keysに付け加える。

% ssh-keygen -i -f putty.pub >> ~/.ssh/authorized_keys

これで、以後はファイアーウォール内のClientMachineからFileServerとSshServerに公開鍵ログインができる。

Puttyを用いた公開鍵ログインのやり方については大阪市立大学学術情報総合センター情報処理教育システム:PuTTYの利用について:Puttyの起動を参考のこと。

pagent.exeを用いたアクセス_

C:\putty\Pagent.exeを起動する(デスクトップにショートカットを作るか、起動時に動かすようにしておくと便利)「Add keys」で秘密鍵を選択&パスフレーズを入力する。こうしておくと、他のSSH利用のアプリケーション(Unison、WinSCP、Subversionなど)でパスフレーズを入力する必要がなくなる。

ClientMachineへのTortoiseSVN(Subversion)のインストール_

以下のページに従いTortoiseSVNをインストール。

インストール後は「設定」→「ネットワーク」と進み、「SSHクライアント」をTortoisePlink.exeにする。

TortoiseSVN(Subversion)を使う_

そして、C:\WorkSpace\SVN以下に任意のディレクトリを作成しSubversionで管理する。 詳しい使い方はGentoo Side:TortoiseSVNの使い方を参照のこと。

ただし、チェックアウトの際には、svn+ssh://の後ろにFQDN(ホスト名+ドメイン名)の代わりに、先にPuttyで設定した「保存されたセッション」名を記載すること。

ファイアーウォールの外のLinux/Unixマシンでバックアップをとる場合_

Unisonを使う場合_

FileServer側での準備_

Unisonで同期をとるディレクトリを作る。

% cd ~/
% mkdir WorkSpace
% mkdir WorkSpace/UNI

ClientMachineの準備_

ClientMachineに~/WorkSpace/UNIというディレクトリをつくり、Unisonで管理するファイルを格納する。

OpenSSHによるSSHログイン_

まず、OpenSSHをインストールする。これは使用する環境により異なるのでGoogleでインストールの仕方を探すこと。

OpenSSHをインストールしたら、公開鍵と秘密鍵のペアを作成する。

% ssh-keygen -t rsa

これで、~/.sshの下にid_rsaとid_rsa.pubが作成される。

次にid_rsa.pubをSshServerとFileServerに転送する。本来は、物理的(フロッピーやCD-ROMなど)で転送すべきだが、これらのサーバがパスワードログインを許している場合には、scpでお茶を濁す。なお、これらのサーバのIPアドレスをそれぞれ、

  • SshServer: 192.168.1.100
  • FileServer: 192.168.1.200

であるとき

% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.100:
% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.200:

次にそれぞれのサーバにログインし、転送した公開鍵を~/.ssh/authorized_keysへ付け加える。もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、以下のようにして付け加える。

% cat id_rsa.pub >> ~/.ssh/authorized_keys
% rm id_rsa.pub

OpenSSHでポートフォーワード_

まず、ClientMachineから、SshServerまでのアクセスを設定し、その後ClientMachineからFileServerのアクセスを設定する。なお、

  • SshServerのIPアドレス:192.168.1.100
  • FileServerのIPアドレス:192.168.1.200

とする。

~/.ssh/configに以下を書く。

Host SshServer
	HostName 192.168.1.100
	User USERNAME
	Protocol 2,1

	LocalForward 50025 192.168.1.200:22

Host FileServer
	HostName localhost
	User USERNAME
	Port 50025
	Protocol 2,1

これでポートフォワードの準備終了。

実際にポートフォーワードを行うときには以下のようにする。

% ssh SshServer -f sleep 300

これでトンネルを開けた後に、任意のソフトウェアを動かす。たとえば、FileServerにsshでログインする場合は以下のようにする。

ssh SshServer -f sleep 300
ssh FileServer

ClientMachineへのUnisonのインストール_

UnisonをインストールすためにはSubversionでソースファイルを落としてこなければならないので、先にSubversionをインストールすること。

まず、OCamlをインストールする。Caml language: Homeからダウンロード(Debian GNU/Linux testingだとaptからインストールできる)。

% gzip -cd ocaml-3.09.3.tar.gz | tar xvf -
% cd ocaml-3.09.3
% ./configure
% make 
% sudo make install

次にUnisonをインストール

% svn checkout https://svn.cis.upenn.edu/svnroot/unison/trunk unison
% cd unison
% make UISTYLE=text
% sudo mv unison unison-2.XX /usr/local/bin

次に環境変数を設定する。使っているシェルの環境変数の定義の仕方に従う。使用しているシェルがcsh か tcshの場合~/.cshrcか~/.tcshrcに以下を付け加える。環境変数UNISONは、設定ファイルとキャッシュが置かれるディレクトリの指定。環境変数UNISONLOCALHOSTNAMEは、マシンのホスト名を指定する(任意でよい)。

setenv UNISON  ~/.unison
setenv UNISONLOCALHOSTNAME  Hogehoge

次のコマンドでUnisonが動くかどうかを確かめる。

% unison -version

Unisonを使う_

~/.unisonの下にdefault.prfを設定する。rootで同期するディレクトリを指定。sshcmdでsshプログラムを指定。servercmdで、FileServerにインストールされているunisonのフルパスを指定する。今回はSSH経由で、FileServerにアクセスするので、片方のrootをssh://ユーザ名@ホスト名/同期ディレクトリのパスを指定する。(注:以下のUSERNAMEはFileServerのログイン名に置き換えること)

root=~/WorkSpace/UNI
root=ssh://USERNAME@FileServer/WorkSpace/UNI
sshcmd=ssh
servercmd=/usr/local/bin/unison
fastcheck=auto

ポイントは、~/.ssh/configで設定したセッション名をホスト名とすること。

ここまで設定したら、うまくいくはずなのでUnisonを使って確認する。

% ssh SshServer -f sleep
% unison

もし、うまくいかなかったら

unison -debug all

とうちこんで、デバッグ情報をだすこと。

オプションについては、以下のサイトを見て調整すること。

でインストールと設定終了。

Subversionを使う_

ClientMachineの準備_

ClientMachineに~/WorkSpace/SVNというをディレクトリをつくり、Subversionで管理するファイルで管理するファイルを格納する。

OpenSSHによるSSHログイン_

まず、OpenSSHをインストールする。これは使用する環境により異なるのでGoogleでインストールの仕方を探すこと。

OpenSSHをインストールしたら、公開鍵と秘密鍵のペアを作成する。

% ssh-keygen -t rsa

これで、~/.sshの下にid_rsaとid_rsa.pubが作成される。

次にid_rsa.pubをSshServerとFileServerに転送する。本来は、物理的(フロッピーやCD-ROMなど)で転送すべきだが、これらのサーバがパスワードログインを許している場合には、scpでお茶を濁す。なお、これらのサーバのIPアドレスをそれぞれ、

  • SshServer: 192.168.1.100
  • FileServer: 192.168.1.200

であるとき

% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.100:
% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.200:

次にそれぞれのサーバにログインし、転送した公開鍵を~/.ssh/authorized_keysへ付け加える。もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、以下のようにして付け加える。

% cat id_rsa.pub >> ~/.ssh/authorized_keys
% rm id_rsa.pub

OpenSSHでポートフォーワード_

まず、ClientMachineから、SshServerまでのアクセスを設定し、その後ClientMachineからFileServerのアクセスを設定する。なお、

  • SshServerのIPアドレス:192.168.1.100
  • FileServerのIPアドレス:192.168.1.200

とする。

~/.ssh/configに以下を書く。

Host SshServer
	HostName 192.168.1.100
	User USERNAME
	Protocol 2,1

	LocalForward 50025 192.168.1.200:22

Host FileServer
	HostName localhost
	User USERNAME
	Port 50025
	Protocol 2,1

これでポートフォワードの準備終了。

実際にポートフォーワードを行うときには以下のようにする。

% ssh SshServer -f sleep 300

これでトンネルを開けた後に、任意のソフトウェアを動かす。たとえば、FileServerにsshでログインする場合は以下のようにする。

ssh SshServer -f sleep 300
ssh FileServer

ClientMachineへのSubversionのインストール_

使用しているOSによってインストール方法が異なるので各自調べること。ただし、https経由でファイルがとってこれるように設定すること。

Debian GNU/Linux testingでは、

% apt-get install subversion

でインストールと設定終了。

Subversionを使う_

ポイントはサーバ名の指定部分を~/.ssh/configで指定したセッション名にすること。すなわち ssh FileServerを呼び出させること。

  • チェックアウトをする場合
      % ssh encal -f sleep 300
      % svn checkout svn+ssh://cheng-lab/path/dir
    
  • update, commitをするとき
      % ssh encal -f sleep
      % svn update
    

リポジトリにさわるときには必ずトンネルを立ち上げること。

Subversionのコマンドについてこちらを参照のこと。

ファイアーウォールの内のLinux/Unixマシンでバックアップをとる場合_

Unisonを使う場合_

FileServer側での準備_

Unisonで同期をとるディレクトリを作る。

% cd ~/
% mkdir WorkSpace
% mkdir WorkSpace/UNI

ClientMachineの準備_

ClientMachineに~/WorkSpace/UNIというディレクトリをつくり、Unisonで管理するファイルを格納する。

OpenSSHによるSSHログイン_

まず、OpenSSHをインストールする。これは使用する環境により異なるのでGoogleでインストールの仕方を探すこと。

OpenSSHをインストールしたら、公開鍵と秘密鍵のペアを作成する。

% ssh-keygen -t rsa

これで、~/.sshの下にid_rsaとid_rsa.pubが作成される。

次にid_rsa.pubをSshServerとFileServerに転送する。本来は、物理的(フロッピーやCD-ROMなど)で転送すべきだが、これらのサーバがパスワードログインを許している場合には、scpでお茶を濁す。なお、これらのサーバのIPアドレスをそれぞれ、

  • SshServer: 192.168.1.100
  • FileServer: 192.168.1.200

であるとき

% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.100:
% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.200:

次にそれぞれのサーバにログインし、転送した公開鍵を~/.ssh/authorized_keysへ付け加える。もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、以下のようにして付け加える。

% cat id_rsa.pub >> ~/.ssh/authorized_keys
% rm id_rsa.pub

ClientMachineへのUnisonのインストール_

UnisonをインストールすためにはSubversionでソースファイルを落としてこなければならないので、先にSubversionをインストールすること。

まず、OCamlをインストールする。Caml language: Homeからダウンロード(Debian GNU/Linux testingだとaptからインストールできる)。

% gzip -cd ocaml-3.09.3.tar.gz | tar xvf -
% cd ocaml-3.09.3
% ./configure
% make 
% sudo make install

次にUnisonをインストール

% svn checkout https://svn.cis.upenn.edu/svnroot/unison/trunk unison
% cd unison
% make UISTYLE=text
% sudo mv unison unison-2.XX /usr/local/bin

次に環境変数を設定する。使っているシェルの環境変数の定義の仕方に従う。使用しているシェルがcsh か tcshの場合~/.cshrcか~/.tcshrcに以下を付け加える。環境変数UNISONは、設定ファイルとキャッシュが置かれるディレクトリの指定。環境変数UNISONLOCALHOSTNAMEは、マシンのホスト名を指定する(任意でよい)。

setenv UNISON  ~/.unison
setenv UNISONLOCALHOSTNAME  Hogehoge

次のコマンドでUnisonが動くかどうかを確かめる。

% unison -version

また、puttyのフォルダにもパスを通しておく必要がある。puttyのバイナリファイルをC:\Program Files\Puttyとして置いている場合は環境変数(システム環境変数の方に)以下の変数を追加する(「新規」を押す)

PUTTY_BASEPATH C:\Program Files\Putty

また、システム環境変数のpathに以下を付け加える。(なお、先頭のセミコロンは区切り文字に使う)

;%PUTTY_BASEPATH%\bin

Unisonを使う_

~/.unisonの下にdefault.prfを設定する。rootで同期するディレクトリを指定。sshcmdでsshプログラムを指定。servercmdで、FileServerにインストールされているunisonのフルパスを指定する。今回はSSH経由で、FileServerにアクセスするので、片方のrootをssh://ユーザ名@ホスト名/同期ディレクトリのパスを指定する。(注:以下のUSERNAMEはFileServerのログイン名に置き換えること)

root=~/WorkSpace/UNI
root=ssh://USERNAME@192.168.1.200/WorkSpace/UNI
sshcmd=ssh
servercmd=/usr/local/bin/unison
fastcheck=auto

ここまで設定したら、うまくいくはずなのでUnisonを使って確認する。

% ssh USERNAME@192.168.1.200 -f unison -version

もし、うまくいかなかったら

unison -debug all

とうちこんで、デバッグ情報をだすこと。

オプションについては、以下のサイトを見て調整すること。

Subversionを使う_

ClientMachineの準備_

ClientMachineに~/WorkSpace/SVNというをディレクトリをつくり、Subversionで管理するファイルで管理するファイルを格納する。

OpenSSHによるSSHログイン_

まず、OpenSSHをインストールする。これは使用する環境により異なるのでGoogleでインストールの仕方を探すこと。

OpenSSHをインストールしたら、公開鍵と秘密鍵のペアを作成する。

% ssh-keygen -t rsa

これで、~/.sshの下にid_rsaとid_rsa.pubが作成される。

次にid_rsa.pubをSshServerとFileServerに転送する。本来は、物理的(フロッピーやCD-ROMなど)で転送すべきだが、これらのサーバがパスワードログインを許している場合には、scpでお茶を濁す。なお、これらのサーバのIPアドレスをそれぞれ、

  • SshServer: 192.168.1.100
  • FileServer: 192.168.1.200

であるとき

% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.100:
% scp ~/.ssh/id_rsa.pub USERNAME@192.168.1.200:

次にそれぞれのサーバにログインし、転送した公開鍵を~/.ssh/authorized_keysへ付け加える。もし、まだ~/.sshが作られていないならば

% ssh-keygen -t rsa
Initializing random number generator...
Generating p:  .++ (distance 66)
Generating q:  ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...

となるのでパスフレーズを入力し、~/.sshのディレクトリとついでにこれらのサーバの公開鍵と秘密鍵のペアを作成する。

その後、以下のようにして付け加える。

% cat id_rsa.pub >> ~/.ssh/authorized_keys
% rm id_rsa.pub

ClientMachineへのSubversionのインストール_

使用しているOSによってインストール方法が異なるので各自調べること。ただし、https経由でファイルがとってこれるように設定すること。

Debian GNU/Linux testingでは、

% apt-get install subversion

でインストールと設定終了。

Subversionを使う_

こちらのとおりにやればよい

(管理者向け)サーバ側のUnisonを準備_

FileServerにUnisonの最新版をインストールする。 Unison File Synchronizerから、Subversionで最新版をダウンロードする。

以下の例はではFileServerのOSは、Solaris 8。まず、OCamlをインストール。Caml language: Homeからダウンロード。

% gzip -cd ocaml-3.09.3.tar.gz | tar xvf -
% cd ocaml-3.09.3
% ./configure
% make world
% make opt
% sudo make install

次にUnison

% svn checkout https://svn.cis.upenn.edu/svnroot/unison/trunk unison
% cd unison
% make UISTYLE=text
% sudo mv unison unison-2.XX /usr/local/bin

戻る_