Cygwinのcronによるスケジュールでショートカットを作成する方法

経緯

現在、Windows7 (32bit)でgnupack13.00を使用しています。その中に含まれているcygwinを使用して cronで毎日データのバックアップをとるようにしています。

今回、必要があって毎日0:00にショートカットを作成することを試みました。試行錯誤の結果うまくいくようになったのでその経緯をメモとして残しておきます。

具体的には、 るびきち様のメルマガ 「●るびきちEmacs 087●るびきち大ピンチ!」から「●るびきちEmacs 090●helmってみた」まで4回にわたるファイル管理の内容です。

この中の「●るびきちEmacs 087●」に書かれている方法です。この中ではLinuxを念頭に置いているため「シンボリックの作成」となっていますが、ここではWindowsの話のため「ショートカット」と表記します。

ショートカットの作成

ここからが本題です。

まずは失敗例

今のcygwinではターミナルから ln -s を実行するとシンボリックリンクが作成され、 Windowsからでもショートカットとして使用できます。

ところがcronを使用して同様のコマンドを実行してもショートカットが作成されず、リンクファイルになってしまいました。

解決法

そこで、しばらく悩んだ上で Cygwin でシンボリックを使うための環境変数 を参考にし、 cronで実行したいファイルに

export CYGWIN="winsymlinks"

を追加したところ、ショートカットが作成されるようになりました。

おそらくcronを実行するユーザー”cygserver”(下記を参照)にはシンボリックリンクを作成する権限がないのでしょう。

別の解決法

mklink コマンドでショートカットを作成するように設定した バッチファイルをスケジューラーから起動させてもいいです。

こちらでも試しましたが、 cygwinで行いたかったため上記の方法をとりました。

(参考)cronの設定

cronのインストール

今回は、 CygwinでCronサーバーを動かす の方法を参考にしています。

cygwinのターミナルを「管理者として実行」し、

cron-config

を実行したあとにユーザー”cygserver”を追加します。

cronの確認

どのページでも書かれているように

crontab -e

を実行してから

* * * * * /bin/date >> /tmp/crontest.log

と入力し、 1分毎に時刻が出力されたら成功です。

始めはユーザー”cygserver”を作成せずに行っていましたがログに全く出力されませんでした。そこでユーザー”cygserver”を作成したところ成功しました。

GnuPG公開鍵による暗号化(Windowsおよびgnupack版)

前回の記事はLinux用でしたが、 Windows 7 (32-bit) のSylpheedでも使用したいので設定を行いました。その経過をメモとして残しておきます。

GnuPG 1.4.x

プログラムの入手およびインストール

http://www.nanashinonozomi.com/tips/how-to-install-gnupg-on-windows.html の記事を参考にして、 Windows 7にGnuPGをインストールしました(今回は1.4.19)。

PATH設定

今回はSylpheedで使用したいだけなので環境変数PATHの設定は不要でした。

設定

必要なファイルのコピー

Linuxの~/.gnupgフォルダに存在しているファイル(pubring.gpgなど)を /c/Users/ユーザ名/AppData/Roaming/gnupg(cygwin方式でのパス名)にコピーします。

これでSylpheedでGnu鍵が使用できるようになります。

シンボリックリンクの作成

gnupack(インストールしたMew)でも使用できるように Cygwinのターミナルで

ln -s /c/Users/ユーザ名/AppData/Roaming/gnupg ~/.gnupg

を実行します。

もともと存在していた ~/.gnupg は念のためあらかじめフォルダ名を変更しておきました(必要ないかもしれません)。

これでcygwinからも同じ鍵を使用することができるようになりました。

ちなみに

ln -s ~/.gnupg /c/Users/ユーザ名/AppData/Roaming/gnupg

ではWindowsから認識してくれませんでした。

gnupackでMewを使用するための設定

自宅ではLinuxを使用していますが、職場ではWindows7 (32bit)を使用しています。

Windows用のEmacsとして gnupack を使用しています(現時点での最新版は13.00-2015.05.02)。 gnupackには非常にお世話になっています。

るびきち様の勧め にしたがって gnupack-develをインストールしています。

また、メーラーは Mew を使用しています。

gnupackのバージョンを上げると、これらのアプリケーションを含めて cygwin環境をもう一度設定し直さなければならないため、インストール方法をメモしておきます。

Cygwin上での作業

stunnelのインストール

Gmailを使用する場合に必要となります。

startup_cygwin.exeを起動するか Emacs上のシェル(M-x eshell か M-x shell)で

apt-cyg update -m http://ftp.jaist.ac.jp/pub/cygwin
apt-cyg install stunnel

1行目はミラーサーバーとして http://ftp.jaist.ac.jp/pub/cygwin を選択しています(登録されるため以後は指定しなくてもよい)。

Mewのインストール

Mewのソースコードのダウンロード

ホームページ からソースコードをダウンロードする(現時点での最新版はmew-6.6.tar.gz)。

Mewのビルドおよびインストール

cd (path to sourcecode)
tar xzf mew-6.6.tar.gz
cd mew-6.6
./configure
make
make install
make install-jinfo

これで終了です。

当然ですが ~/.mew.el は必要です。