こんにちは、UNIX上で行うファイル比較とWindowsとのファイル連携について
わからない事があり、ご教示頂きたく投稿致します。


毎日1回、テキストファイルを比較してもし差分があれば
管理者に解る形で抽出させる、という処理を行いたいのです。

環境は以下の通りです。

192.168.1.0/24のセグメント内のあるWindows2003Serverにおいて、
比較対象のファイル(AAAA.txtとする)は以下の場所に日々保存される。

例えば2005年4月1日には

C:\Switch\configs\2005\04\01

というディレクトリ配下にAAAA.txtが作成される。
4月2日ならばC:\Switch\configs\2005\04\02配下にAAAA.txtが作成される。

当日のAAAA.txtと前日のAAAA.txtを比較抽出する処理を、毎日自動で行いたい。

例えば2005年4月10日だと
C:\Switch\configs\2005\04\10配下のAAAA.txtと
C:\Switch\configs\2005\04\09配下のAAAA.txtを比較することになる。

そして比較抽出を処理するのはUNIX端末(そのWindowsサーバと同セグメント)である。


ポイントは、

・比較したいファイルの場所(ディレクトリ)が日々、日付によって変動する
・そのファイルはWindows2003Serverが稼動しているサーバ内にある
・そのファイルをUNIX(例えばBSD)が稼動している端末から参照し、
 毎日任意の時間に比較・抽出したい

というところかと思うのですが、どういう手段がベストでしょうか。

UNIXに疎い私なりに調べたところ、
diffとsortコマンド、そして「samba」と「クーロン」というツールがあれば
可能かと思うのですが、如何でしょうか。

スクリプトをどう書くかなど、具体的な手法をご教示頂ければ幸いです。
よろしくお願い致します。

A 回答 (1件)

(1)unixからWindowsのフィルをアクセスする方法


案1:Windowsでftpサーバーを動かして、unix上でftpコマンドで取得する
案2:Windowsでフォルダに共有設定して、unix上でsmbclientコマンドで取得する

(2)ディレクトリ名が日によって違う
FILE=`date +%Y/%m/%d/AAAA.txt`
のようにファイル名をセットできる。前日日付は、linuxのdateなら -d '1 day ago' をつけて、
OLDFILE=`date +%Y/%m/%d/AAAA.txt -d '1 day ago'`
FreeBSDのdateなら -v -1d です。

(3)毎日任意の時間に
任意の時間であればそのときにコマンドをたたけばいいと思いますが、cronを書いているということは「毎日決まった時間に」の間違いでしょうか?
スクリプトを作ってから、crontab -e でcrontabファイルを編集して、例えば毎日3時0分にやりたければ
0 3 * * * スクリプト名
と書けばいいです。結果はメールで届きます。

ftpの場合のサンプルを書くと、
FILE=`date +/Switch/configs/%Y/%m/%d/AAAA.txt`
OLDFILE=`date +/Switch/configs/%Y/%m/%d/AAAA.txt -d '1 day ago'`
ftp -n WindowsHostName <<EOF
user username password
get $FILE today.txt
get $OLDFILE yesterday.txt
bye
EOF
diff yesterday.txt today.txt
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございました。
ここまでヒントを頂ければ十分応用が効きそうです。
またftpを利用することは考えていなかったので、これも並行して検討していきます。

お礼日時:2005/04/21 21:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング