Unison(windows用) 導入

参考になった記事

  1. 入手元
  2. 入手した実行ファイルをunison.exeのファイル名として同期したい各ローカルネットワーク上のPCのパスの通ったディレクトリにコピーするなりシンボルリンクで貼るなりして置く
  3. puttyでOpenSSHでの秘密鍵指定付き接続のプロファイル作成 (19/07/14)
  4. リンク先頁の一番上の配布物をputtyと同フォルダに解凍しunisonの引数もしくは設定のsshcmdに指定http://www.wischik.com/lu/programmer/unison-ssh.html / 中身はputtyplink互換なsshコマンドなようです
  5. hoge.prfの記述 (2016/09/22 記事の説明不足が気になるので追記)
root = e:/path/
root = ssh://valid-user@192.168.0.2/e:/path/
sshcmd = d:/pathto/putty/ssh.exe ※puttyと同フォルダ
sshargs = -load ssh-x121e ※puttyで作成した秘密鍵指定済みプロファイル名 (19/07/14 修正)
sshargs = -i c:/Users/valid-user/.ssh/id_rsa-host_n.ppk ※接続先host n用に作った秘密鍵
  1. 上記の内容のファイルを "C:\Users\ローカルのユーザー名\.unison"に置く
  2. コマンドプロンプトから "unison.exe hoge" とコマンドを実行(hogehoge.prfを指す)
  • いろいろ試行錯誤し悩んだが上記の方法で一発でいけた

リモホに-socketオプションで常駐させて生通信の同期で使ってみていたが、同期が開始せずに「ユーザーディレクトリにある.unisonフォルダ以下のxxxxxというファイルが間違っているので削除してください」などと都度面倒くさいエラーが頻繁に出て終了していたのに対し、本筋のssh接続での同期では殆どそういうことがないので格段と良くなった感じがする。流石
しかしモニタ表示のの文字化けだけ少々気になる。

  • 他にもCLIで動作する完全双方向同期のツールはないかと結構探したものの、あまり見つけることはできず、WindowsのSyncToyも使ってみましたが二股の同期などですぐに同期データがぶっ壊れる(使い方の問題かもしれませんが・・・) 感じでいちいちGUIから設定し直すのが面倒で使うのは辞めました。でもUnisonだと巨大なファイルの点数の入ったディレクトリの同期は厳しいのでそういう適所でmicrosoft御製のSyncToyは使えるかも
  • しかし当のUnisonのほうも二股同期していると消した筈のファイルが復活することがしばしば(条件は未検証、コマンドラインオプション次第で解決するかも !?)
  • (19/07/14) 記事が雑なので書き直しました
  • (19/07/14) putty側で接続プロファイルを作っておいて、そのオプションを指定したほうがすんなり動くので修正、"ssh-x121e"がputtyのOpenSSH接続の接続プロファイル名です
  • (19/07/14) 同期するファイルの総数があまりにも多いと、(少なくとも100万単位ですが) 、うまく同期できない

windows 版 OpenSSH 導入

参考になった記事

"Download the latest build" のlatestのリンク先に64bit版もある

実際の導入で参考になった記事

  1. セットアップ (※配布元) / https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH

解説頁にあるようにせず、カレントディレクトリから ".\"を省いてbasenameだけで目的のファイルを実行しようとしてもうまくいかない場合があった。なので環境によっては ".\"が厳守なようである。

  1. 共通鍵作成(※配布元) / https://github.com/PowerShell/Win32-OpenSSH/wiki/ssh.exe-examples
  2. WinSCPを利用した鍵の登録 / FreeSSHdRSAキーペアを用いた認証の設定手順 - FreeSSHdでの公開鍵、秘密鍵認証設定 https://www.ipentec.com/document/document.aspx?page=windows-freesshd-rsa-keypair-authentication-setting&culture=ja-jp

(パスフレーズなし登録) 共通鍵作成迄はMSの配布物で行い、秘密鍵の方をputty付属のputtygenでppk拡張子の形式のid.rsa.ppkに変換して一応保存しておく。初回ログインと秘密鍵の登録がうまく出来なかったので、WinSCPを利用してみたらうまく行った。送信する秘密鍵を読み込むときの形式指定でputty用の形式を選ばずにignoreを2回程繰り返し選択して接続を押す。ログオンして接続状態がうまく行かずに更にダイアログが2回出るのでその時に終了させる。そしてその後、MSのSSHssh -i id_rsa user@xxx.xxx.xxx.xxx のコマンドを実行したらユーザーのパスワード無しにログオン出来た。

次回の起動OSの予約について

grubのローダはインストール時はsdaの先頭部分にインストールしたくはなかった。なのでsda5の先頭部分に入っていてノートPCの入電源時はwindows7のOS選択画面→grubの起動OSの選択画面という順序で納得していたが、次回の起動OSの予約と言った動作が可能になる可能性があるので、sdaの先頭部分にgrubをインストールしなおした。なの現在はgrubが起動しwindowsを選択するとwindowsのOS選択画面という順序になる

grub をインストールしたlinux 環境側

  1. "grub-reboot n"をroot権限(パスワードの入力)無しに実行できるようにする為、/boot/grub/grubenv のファイルのみ書込のアクセス権をchmodコマンドで緩くする。
  2. "grub-reboot n"の実行が通用しない時はgrub-editenv や grub-set-defaultなどgrubenvファイルの内容を変更する関連のコマンドでnext_entryの要素を追加し直してからgrub-reboot n を実行する。
  3. set-nextboot-win.desktop とか set-nextboot-ubu.desktop とかのファイル (実行内容は grub-reboot n)のファイルを作ってデスクトップにリンクを張るか、ランチャに登録する

Windows

  1. grub をインストールしたlinux 環境を予め /boot 部分がFAT32パーティションのシステムにしておくことが想像される(未確認)、その方法以外では以下の方法を取る
  2. paragon の ExtFs for windows をインストールし、そのままでは自動でドライブレターが振られ、不便なので再起動後、ExtFs の管理画面を出して、起動時に自動でマウントしないように設定のチェックをオフする
  3. cmd.exe の窓を開き、"C:\Program Files (x86)\Paragon Software\Paragon ExtFS for Windows\extmounter.exe" /list を実行して マウントしたいディスクを確認 ( diskX と volumeY のXとYの番号)
  4. 起動時に何らかの実行するバッチファイルに以下の行を追加 (以下は例)

"C:\Program Files (x86)\Paragon Software\Paragon ExtFS for Windows\extmounter.exe" /mount disk0 volume1 L:
(※L: は /boot を含むパーティションのドライブ)

  1. windowsから L:\boot\grub\grubenv のnext_entry=n (n=次回起動したいOSのgrub上の論理的番号) を書換えるスクリプトかバッチを書く

作業のためにやっておいたこと

  • 入れたOSのすべてイメージ単位のバックアップ

問題点

  • 起動時に environment block なんちゃらエラー等と出るが放っておくと起動してくれるので割り切る!!!
  • 偶に デスクトップのログイン中にもエラーのダイアログが出るが割り切る

2016年02月13日のツイート

2015年12月24日のツイート