Windows10でrsyncを使うためにCygwinをインストール

概要

2019-04-14に行った記録です。

Windows 10 Pro 64bit にインストールする手順です。

主な目的はWindows10でrsyncすることです。
cwRsyncとかwin10のUbuntuモード(WSL)とか方法はあると思いますが、扱いやすいのはCygwinということで落ち着きました。

ダウンロード

公式サイト / 配布ページ

https://cygwin.com/

公式サイトにアクセスし「setup-x86_64.exe」をクリックしてダウンロードします。

インストール

ダウンロードした 「setup-x86_64.exe」 をダブルクリックして起動します。

そのまま「次へ」

「Install from Internet」を選択して「次へ」

本体のインストール先は変更せずそのままにします。
何も変えずに確認だけして「次へ」

ダウンロードデータは下記に変更
D:\app_data\CygwinPakage

「次へ」

Directで「次へ」

とりあえず一番上を選択して「次へ」

「Net」を展開

「openssh」と「rsync」のみ有効にします。
「openssl」も有効になっているけどデフォルトが有効になっています。
他にも必要に応じて選択してください。
ポイントとしては「必要ないものは入れない、必要になるまで入れない」です。

そして「次へ」

内容を確認して「次へ」

待ちましょう。

デスクトップにアイコンはいらないのでチェックを外して、スタートメニューには欲しいのでチェックを残して「完了」です。
※慣れないうちはデスクトップにアイコンを残したほうが良いかもです。

動作確認

スタートメニューからアイコンを選択して起動します。

黒い画面が出てきました。

SSHで接続確認

まずはSSHで行ってみます

ssh username@192.168.xxx.xxx -p xxx

こんな感じで行ってみますと

こうです。
相手につながるところまではいってるけど、鍵がないからダメよと断られちゃいました。

秘密鍵を配置

普通に考えて秘密鍵を置く場所は次になりますね。

ls -la /home/username/.ssh

はい、ここに置けばOKです。id_rsaを置けばOKです。

ちなみにオススメはCygwin用に新規で公開鍵と秘密鍵を作る方法です。
linuxとかと同じくで ssh-keygen コマンドで作ります。

ちなみにエクスプローラから触ることもできて、こちらの場所になります。

パーミッションの変更

chmod 0600 /home/aulta/.ssh/id_rsa

鍵のパーミッションは 0600 にしておきます。エクスプローラからはできないのでCygwinで行います。

ssh username@192.168.xxx.xxx -p xxx

これでログインできました。

rsyncのためのバッチファイル

win + r キーから cmd でそこからやっても良いんですが、いろいろ手間になってくるのでバッチファイルに書いて実行した方が効率的だと思います。

@ECHO OFF
SETLOCAL
SET PATH=C:\cygwin64\bin;%PATH%

SET PORT_NO=22
SET PATH_SOURCE=/cygdrive/c/www/example.com
SET PATH_DIST=username@192.168.1.1:/home/username/example.com

echo "-------- start. /app --------"
rsync -vrtD --update -e "ssh -p %PORT_NO%" %PATH_SOURCE%/app/ %PATH_DIST%/app/

pause

こちらがひな形です。
必要に応じて書き換えてください。
example.com.bat とかのファイル名で保存しておくと便利です。

本記事はrsyncをwindowsで扱いやすくすることが目的で、rsyncそのものを語るものではありません。rsyncが何をするものなのかメリットデメリットを理解したうえでご利用ください。

トラブル対策

パーミッションがおかしくなる

「cygwin rsync パーミッション noacl」このあたりで検索すると似たような記事が見つけられます。

Cygwinをセットアップしてrsyncの設定をして実行してみると動かない。サーバを覗いてみるとパーミッションがめちゃくちゃ。
たぶんこうなります。

今日は 2019-04-14 。
Cygwin1.7の頃からの問題で、最新版の Cygwin 3.0.6 をインストールしたのでもう解消されているかな。と思ったのですがそうでもなかったようです。

スタートメニューからCygwinを起動します。

vi /etc/fstab

ファイルを開くと次の内容が見つかると思います。

none /cygdrive cygdrive binary,posix=0,user 0 0

次のように「noacl」を加えます。

none /cygdrive cygdrive binary,posix=0,user,noacl 0 0