こんにちは、らいあです。
Dinoのプログラマーは毎日いろんなツールや関数を作って遊んでいます。
今日は、windowsマシンで開発作業をしている人のためのhowtoをしようと思います。自分のPCで書いたソースコードを開発サーバにアップロードして動作させる事はよくありますよね。そのときに、みなさんはどうやってファイルをアップしていますか。
ftp?smb?scp?rsync?
今日はそのなかから、WinSCPとrsyncによるやりかたを解説します。どちらもssh経由によるアップロードです。
WinSCPでアップロードするやり方
利点
簡単。
ファイルを編集すると同時に勝手にアップロードしてくれる。
欠点
こまかい調節が面倒/できない。
重い。
やりかた
WinSCPをインストールする。
自分のPCのディレクトリとアップロード先とを選びます。『ファイルの削除』にチェックを入れると完全な同期です。アップロード先にある余分なファイルは削除されます。
僕が使っていて気づいたのは、『ファイルの削除』にチェックをしない状態だと、不完全な(アップロードされないファイルが発生する)場合があることです。なので僕は必ずチェックをつけています。
アップロードしたくないファイルは『転送設定』画面にある『除外』のテキストボックスに記述しておくとよいです。
これで、『開始』を押すと自分のPCのファイルの監視がはじまります。
ただし、ファイルが500個を超えたあたりから、少々パフォーマンス的につらくなるのが実感されるかと思います。またこの機能は、タイムスタンプによって判断をしていますので、更新日時だけが変更されるような作業(たとえばsvnupとか)だけでもアップロードされてしまいます(わりとこれがうっとうしい)。
rsyncでアップロードするやり方
利点
細かく調整ができる。
高速。
欠点
設定が面倒。
自分でクリックして実行しないといけないので、アップロードし忘れることがある。
やりかた
cwRsyncをインストールする。
cwRsyncのインストールディレクトリにcwrsync.cmdというファイルがあるので、それを自分のプロジェクトにコピーして下さい。そこに、自分のPCのディレクトリとアップロード先、オプションなどを記述します。実際にはcmdのスクリプトを書くことになります。
例です。
cwRsyncにはsshが付属しているので、アップロード後にセットアップスクリプトを実行させたりできるのが便利です。この場合はsymfony ccを叩いています。
REM ** CUSTOMIZE ** Enter your rsync command(s) here SET RSYNC_OPT=--verbose SET RSYNC_OPT=%RSYNC_OPT% --exclude=.svn SET RSYNC_OPT=%RSYNC_OPT% --exclude=/.project SET RSYNC_OPT=%RSYNC_OPT% --exclude=/devsync.cmd SET RSYNC_OPT=%RSYNC_OPT% --exclude=/doc/* SET RSYNC_OPT=%RSYNC_OPT% --exclude=/log/* SET RSYNC_OPT=%RSYNC_OPT% --exclude=/cache/* SET RSYNC_OPT=%RSYNC_OPT% --exclude=/.cache/ SET RSYNC_OPT=%RSYNC_OPT% --exclude=/.settings/ SET RSYNC_OPT=%RSYNC_OPT% --exclude=/configure.yml SET RSYNC_OPT=%RSYNC_OPT% --exclude=/config/config.php SET RSYNC_OPT=%RSYNC_OPT% -rltgoD SET RSYNC_OPT=%RSYNC_OPT% --delete SET RSYNC_OPT=%RSYNC_OPT% --rsh=ssh SET RSYNC_OPT=%RSYNC_OPT% --checksum SET RSYNC_SRCDIR=/cygdrive/c/ryer/work/project1/ SET RSYNC_DESTDIR=/home/ryer/project1/ SET TARGET_HOST=ryer@192.168.0.101 SET SETUP_CMD="symfony configure; symfony cc;" @ECHO ON rsync %RSYNC_OPT% %RSYNC_SRCDIR% %TARGET_HOST%:%RSYNC_DESTDIR% ssh %TARGET_HOST% "cd %RSYNC_DESTDIR%; %SETUP_CMD%"
しかし、いちいちパスワードを入力しないといけないのでは面倒です。それも、cwRsyncには一通りのツールが(ssh-keygenも)付属しているので、パス無し認証の設定が可能です。
コマンドプロンプトで以下のように作業します。出力されるC:\Documents and Settings\自分\.ssh\id_rsa.pubの内容をリモートのsshの.ssh/authorized_keysに記述すれば完了です。
> cd C:\Progra~1\cwRsync\bin > ssh-keygen -P ""
これでcmdファイルを実行するだけで、自分のPCの内容をリモートのフォルダにアップロードできるようになりました。
eclipseで使ってみた例です。
最後に
smbやWinSCP等の同期ツールは、書いたそばから勝手にアップロードされるので、アップロードし忘れる心配がありません。rsyncのほうも、基本的にはダブルクリック一発だけですので、アップ漏れの心配は少ないでしょう。なるべく、編集したファイルを自分で選択するような必要のない、簡単なやりかたを考えてみてください。
最近、少々肩身の狭いWindowsユーザですが、一緒にがんばりましょうね!

コメント / トラックバック 1 件
[...] 前準備として、rsyncクライアントが必要なので、Windowsで動くcwRsyncを入れて、PATHを通しておきます。 [...]
コメントする