cygwin

Windowsで日々のバックアップ

Windowsで日々のバックアップを取るためにcygwinをインストールしました。バックアップは、cygwinのrsync+cronでNASに5分ごとに同期しようと思っています。

cygwinのインストール

下記、URLからsetup.exeをダウンロードして起動します。

必要なパッケージ

cygwinの下記のパッケージをインストールします。

cron
openssh
rsync
vim

環境は、下記の通り
XP

$ uname -a
CYGWIN_NT-5.1 1.5.24(0.156/4/2) 2007-01-31 10:57 i686 Cygwin 

Vista

$ uname -a
CYGWIN_NT-6.0 1.5.24(0.156/4/2) 2007-01-31 10:57 i686 Cygwin
$

cronの設定

Vistaでは、cygrunsrvコマンドでサービスを登録するには”Cygwin bash shell”の起動時に”管理者として実行…”を選択して実行する必要があります。
/etc/passwdと/etc/groupがない場合には、下記で生成します。

$ mkpasswd -l > /etc/passwd
$ mkgroup -l > /etc/group
サービスの登録

cygrunsrvコマンドでWindowsサービスとしてcronを登録します。

$ cygrunsrv.exe -I cron -d "Cygwin cron" -p /usr/sbin/cron.exe  -a -D
$ cygrunsrv.exe --query cron
Service             : cron
Display name        : Cygwin cron
Current State       : Stopped
Command             : /usr/sbin/cron.exe -D
$
サービスの起動

cygrunコマンドで登録したサービスを起動します。

$ cygrunsrv.exe --start cron
$ cygrunsrv.exe --query cron
Service             : cron
Display name        : Cygwin cron
Current State       : Running
Controls Accepted   : Stop
Command             : /usr/sbin/cron.exe -D
$
テスト用のcronジョブを登録

下記のようにテスト用のcronジョブを登録します。

$ crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.Yai3MdJruN installed on Wed Oct 24 22:29:34 2007)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
* * * * * /usr/bin/date >> /tmp/date.log
$

XPで試したところ下記のように正しく動きました。

$ tail -f /tmp/date.log
Wed Oct 24 18:53:02     2007
Wed Oct 24 18:54:02     2007
Wed Oct 24 18:55:02     2007
Wed Oct 24 18:56:01     2007
Wed Oct 24 18:57:02     2007
Wed Oct 24 18:58:02     2007
Wed Oct 24 18:59:02     2007 

しかし、Vistaでは、イベントビューアで確認すると下記のようなメッセージが表示され動きません。マシンをリブートしても状況は変わりませんでした。

イベントには次の情報が含まれています:
/usr/sbin/cron: PID 8108: (CRON) error (can't switch user context)

なんでだろ…
今日は、これまで…
cron用ユーザを登録する方法がありました。試すのは、また今度…
http://tanixxx.vox.com/library/posts/tags/tech/

ううむ、下記情報ではパーミッション関係で、とてもややこしそう
http://sohda.net/cygwin/treebbs/treebbs.cgi?log=3377

タイトルとURLをコピーしました