cwRsync は Windows で動作する Rsync です。1. cwRsync をインストール
Rsync はローカルバックアップもできますが、ここでは ssh を使用してリモートバックアップを行います。
cwRsync のリモートバックアップで ssh を使用すると、
/home/Who/.ssh/ (← C:\cwRsync_5.5.0_x86_Free\home\Who\.ssh\ のことです)というフォルダーを強制的に作成しようとして Who が存在しないためにエラーを引き起こします。
※このエラーを回避するため、ここではコマンド mklink を使用してシンボリックリンク (ジャンクション) を作成します。
シンボリックリンクやジャンクションは、Windows Vista 以降の機能なので、それ以前の Windows では動作しません。※ ssh で通信を行うため、サーバー側に sshd が動作している必要があります。
(現時点で WindowsXp を使っている人はいないと思いますが)
プロトコル rsync:// は使用しません。
1-1. itefix.net から cwRsync Free バージョン (zip ファイル) をダウンロード2. パスワードなしログインの準備
Free 版は有償版と比較して、以下の制限があります。1-2. Free バージョンをインストール
有償版の機能 備考 Rsync サーバ機能 なし - パッチ なし 有償版には下記の機能がある
・ファイル名変換機能
・転送時間制限機能
・ファイル名の大文字小文字同一視機能
・パスワードファイルのパーミッション無視機能クライアント用 GUI インターフェイス なし - サポート なし - アップグレード機能 なし フリー版は手動でダウンロード&設置 64bit 版 なし フリー版は 32bit 版のみ パッケージ選択機能 なし フリー版にはインストーラが存在しない
今回ダウンロードしたのは cwRsync_5.5.0_x86_Free.zip でした。
インストールと言っても、フリー版にはインストーラが存在しないため、zip ファイルを任意の場所に解凍するだけ。1-3. 環境変数を設定
今回は
として展開しました。
C:\cwRsync_5.5.0_x86_Free\
[スタート(右クリック)] - [システム] - [システムの詳細設定] を選択すると「システムのプロパティ」ウィンドウの「詳細設定」タブが選択されて表示されるので、[環境設定(N)...] ボタンをクリックする。1-4. 動作確認
「環境変数」ウィンドウが表示されるので、「*** のユーザー環境変数」の [新規(N)...] ボタンをクリックする。
「新しいユーザー変数」ウィンドウが開くので、下記項目を記入し、[OK] ボタンをクリックする。
変数名 値 備考 PATH C:\cwRsync_5.5.0_x86_Free\bin 「cwRsync の展開先ディレクトリ + bin」を PATH に追加する
適当なディレクトリへ移動して、下記コマンドを実行してみる。1-5. ワークディレクトリの設定
■コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>ssh usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q cipher | cipher-auth | mac | kex | key] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] C:\tmp>ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/Who/.ssh/id_rsa): [Enter] Enter passphrase (empty for no passphrase): ^C (これ以上進むと鍵ファイルが作成されてしまうので中断する) C:\tmp>rsync --version rsync version 3.1.2 protocol version 31 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, ACLs, no xattrs, iconv, symtimes, prealloc rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details. C:\tmp>exit
cwRsync は意地でもディレクトリ /home/Who/.ssh/ を作ろうとするので、シンボリック機能を使用して
/home/Who/ を C:\Users\Who/ として扱うことにする。
※ ssh-keygen, ssh で必要な鍵ファイルはオプションで指定できるが、それでもなお /home/Who/ を作成しようとしてエラーを表示する。
※ C:\cwRsync_5.5.0_x86_Free\home\Who\ というディレクトリを作成しても良いが、それだとユーザーファイルが二重管理になってしまう。
「コマンドプロンプト」を管理者として実行
コマンド mklink /D の実行は管理者権限が必要。
■管理者: コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>cd C:\cwRsync_5.5.0_x86_Free\ C:\cwRsync_5.5.0_x86_Free\>mklink /D home C:\Users\ home <<===>> C:\Users\ のシンボリック リンクが作成されました C:\cwRsync_5.5.0_x86_Free\>exit
2-1. 同期宛サーバに cwRsync 用のアカウントを作成し、パスワードを設定する。3. ファイル転送
2-2. 同期宛サーバに cwRsync 付属の ssh.exe でログインできることを確認する。
$ su
# useradd Who
# passwd Who
# exit
$ exit
※ここでは同期宛サーバとして 192.168.1.111 (CentOS7) を想定しています。
2-3. 秘密鍵と公開鍵の作成
■コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>ssh Who@192.168.1.111 password: ***** (上記 2-1 で設定したパスワード) $ exit
2-4. 公開鍵を同期宛サーバへ登録
■コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/Who/.ssh/id_rsa): [Enter] Enter passphrase (empty for no passphrase): [Enter] (パスフレーズは入力しない) Enter same passphrase again: [Enter] Your identification has been saved in /home/Who/.ssh/id_rsa. Your public key has been saved in /home/Who/.ssh/id_rsa.pub. The key fingerpring is: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Who@host-name The key's randomart image is: +---[RSA 2048]----+ |xxxxx | | xxxxx | |xx xxx| | xxxxx | | xxxxx| | xxxxx | | xxxxx | |xxx x| | xxxxx | +----[SHA256]-----+ C:\tmp>dir C:\Users\Who\.ssh\id_rsa ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 4813-719E です c:\Users\Who\.ssh のディレクトリ 20xx/xx/xx 19:54 1,675 id_rsa 1 個のファイル 1,675 バイト 0 個のディレクトリ 83,984,863,232 バイトの空き領域 C:\tmp>dir C:\Users\Who\.ssh\id_rsa.pub ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 4813-719E です c:\Users\Who\.ssh のディレクトリ 20xx/xx/xx 13:46 402 id_rsa.pub 1 個のファイル 402 バイト 0 個のディレクトリ 83,984,863,232 バイトの空き領域 C:\tmp>exit
上記 2-3 で作成したファイルの一つ「id_rsa.pub」の内容を、同期宛サーバの .ssh/authorized_keys ファイルに追記する。2-5. 秘密鍵の保護
authorized_keys ファイルが存在しなければ、新規作成する。(パーミッションは 600 すること)
id_rsa.pub の転送ツールは cwRsync に用意されていないため、転送方法は任意。
C:\Users\Who\.ssh\id_rsa.pub ⇒ 追記 Who@192.168.1.111:/home/Who/.ssh/authorized_keys
ここでは、以下の手順により追記する。
2-4-1. メモ帳で C:\Users\Who\.ssh\id_rsa.pub を開く。
2-4-2. Teraterm で Who@192.168.1.111 へログインする。
2-4-3. 2-4-1 で開いた id_rsa.pub をクリップボードにコピーする。
2-4-4. Teraterm で下記を実行する。
2-4-5. Teraterm を終了する。
/home/Who$ mkdir .ssh
/home/Who$ cat >> .ssh/authorized_keys
(プロンプト待ちになるので、上記 2-4-3 でコピーした内容を張り付ける)
^D
/home/Who$ chmod 600 .ssh/authorized_keys
2-4-6. メモ帳を終了する。
2-3 で作成した秘密鍵は、(Windows の) 他ユーザから閲覧可能だと cwRsync の ssh が動作しないため、他ユーザからのアクセスを遮断する。2-6. パスワードなしでログインできることを確認する。
id_rsa を右クリック - プロパティ - セキュリティ タブ
[編集] ボタンをクリックし、読み取り/書き込み権限をすべて外す。
※他ユーザからのアクセスを遮断しないと Load key "/home/Who/.ssh/id_rsa": bad permissions のエラー表示となる
■コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>ssh Who@192.168.1.111password:(上記 2-2 ではパスワードが必要だったが、入力不要になる) $ exit2-7. 同期宛サーバのパスワードを無効にする。(ユーザ root で実行)
※ .shosts を使用しない場合、passwd -l を実施するとログインできなくなります。
$ su
# passwd -l Who
# exit
$ exit
※公開鍵でログインできるようになったので、パスワードログイン用のパスワードは不要になる。
※再度パスワードログインが必要になった場合は passwd -u Who を実行して戻すことができる。
3-1. ファイル転送例(1)4. スケジューラーへの登録
cwRsync (Windows) の C:\Users\Who\.ssh\id_rsa.pub → 同期宛サーバの /home/Who/ へコピーする場合3-2. ファイル転送例(2)
■コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>rsync -v -e ssh '/cygdrive/c/Users/Who/.ssh/id_rsa.pub' 'Who@192.168.1.111:/home/Who/' C:\tmp>exit
※オプション -v は対象ファイル (コピーの是非は問わない) を表示する指定。
※ cwRsync は cygwin の機能を使用しているため、Windows の C: ドライブは /cygdriver/c/ として指定する必要があります。
同期宛サーバの /etc/centos-release → cwRsync (Windows) の C:\Users\Who\ へコピーする場合3-3. ファイル転送例(3)
■コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>rsync -v -e ssh 'Who@192.168.1.111:/etc/centos-release' '/cygdriver/c/Users/Who/' C:\tmp>exit
同期宛サーバの /var/log/httpd/access_log* → cwRsync (Windows) の C:\Users\Who\ へコピーする場合
■コマンド プロンプト
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\tmp>rsync -v -e ssh 'Who@192.168.1.111:/var/log/httpd/access_log*' '/cygdriver/c/Users/Who/' C:\tmp>exit
Rsync の特徴と言えば、ファイルの自動同期です。
ここまでの設定で、コマンドでのファイル転送ができるようになったので、Windows のスケジューラーにファイル転送コマンドを設定します。
Windows 7 8 8.1 10 ともに、
コントロールパネル - システムとセキュリティ - 管理ツール - タスクスケジューラ を選択
「タスク スケジューラ」画面で以下を操作する。
「タスクスケジューラ(ローカル)」をポイントする。
操作(A) - 基本タスクの作成(B)
上記 3-1 を登録する場合
※新規作成時は、5 分毎のスケジュールを指定することはできない。
名前(A) テスト転送 トリガー ●毎日
○毎週
○毎月
○1回限り)
○コンピューターの起動時
○ログオン時
○特定イベントのログへの記録時
開始(S): YYYY/MM/DD hh:mm:ss □タイムゾーン間で同期 間隔(C): x 日 操作 ●プログラムの開始(T)
○電子メールの送信 (非推奨)(S)
○メッセージの表示 (非推奨)(M)
プログラムの開始 プログラム/スクリプト C:\cwRsync_5.5.0_x86_Free\bin\rsync.exe 引数の追加 (オプション)(A): -e ssh '/cygdrive/c/Users/Who/.ssh/id_rsa.pub' 'Who@192.168.1.111:/home/Who/' 開始 (オプション)(T): (なし)
※ 5 分毎のスケジュールを指定する場合は、新規作成したタスクの「プロパティ」から変更を行うこと。