ファイル比較抽出とWindowsとのファイル連携方法

このQ&Aのポイント
  • UNIX上で行うファイル比較とWindowsとのファイル連携についてわからない事があり、ご教示頂きたく投稿致します。管理者に解る形で差分を抽出させる処理を自動化したい。
  • 比較対象のファイルが日々、日付によって変動するため、Windows2003Server上のファイルをUNIX端末から参照し、毎日任意の時間に比較・抽出したい。
  • diffとsortコマンドを使用し、さらにsambaとクーロンを使って実現する方法を調べましたが、具体的な手法をご教示ください。
回答を見る
  • ベストアンサー

ファイル比較抽出とWindowsとのファイル連携方法

こんにちは、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」と「クーロン」というツールがあれば 可能かと思うのですが、如何でしょうか。 スクリプトをどう書くかなど、具体的な手法をご教示頂ければ幸いです。 よろしくお願い致します。

noname#33254
noname#33254

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.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

noname#33254
質問者

お礼

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

関連するQ&A

  • 2つのファイル(.log)を比較し、条件が満たしているレコード(行)を抽出する方法

    初心者です。 2つのファイル(.log)を比較し、条件が満たしているレコード(行)を抽出する方法を教えてください。 例 Aファイル 11.111.111 22.222.222 33.333.333 44.444.444 Bファイル 11.111.111.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 22.333.444.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 22.222.222.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 33.333.355.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 33.333.555.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 44.444.444.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 ↓ Cファイル 11.111.111.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 22.222.222.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 44.444.444.1111 [01/Jun/2007:00:00:00 +0000] "GET / test.html 200 このように、AファイルとBファイルを比較し、結果をCファイルに抽出したいです。 エクセルでVlookupの関数を使う方法もありますが、Bファイルは容量が重いのでエクセルデータでは全部読み 取ることができません。 よって、UNIXコマンドでなんとか作業をしたいものです。 commを使う作業もありますが、手作業で不要な部分を削除していくのも大変なのでできれば自動化が希望です。 パソコンのOSはWin2000です。 どなたかご知恵をお借りください。 よろしくお願いします。

  • 差分ファイルの抽出

    初心者のServer管理者です。Solaris 9(sparc)でCシェルを使用しております。単純に1日毎の差分ファイルを抽出するコマンドか、実行可能なシェルがあればご教授願えないでしょうか。又、毎日、夜の3:00にシェルを起動させてたいと考えておりますが、これを実行するには、どのファイルをどのようにしたら良いか検討もつきません。冗長かは、disk suitを使用してミラーで行うつもりです。稼動しているServerが一台だけなので、他のサーバーにFTPしたりその他特別なことは、いたしません。宜しくお願いします。

  • ファイルの比較

    とあるソフトをインストールする前と、した後でのレジストリ内容を比較したいと思っています。 インストール前のレジストリと後のレジストリをテキストにエクスポートして、FCコマンドで テキストを比較しようとしました。 c:\>fc before.txt after.txt /a ところが、「再同期に失敗しました。ファイルが著しく異なります」とメッセージが出て どこの部分が前後で異なるのかが分かりません。 ちなみにどちらのファイルも100MB位です。 どうやったら、比較が出来ますでしょうか?アドバイスを宜しくお願い致します。

  • テキスト比較について

    テキストファイルを比較して抽出したいのですが、 どのようなソフトがいいのかわかりません。 私がしたいことは a.txt (検索) aac = bcf = cag = dai = b.txt (ベース) aaa = 123456789 aac = 234567891 bbf = 345678912 bcf = 456789123 cae = 567891234 cag = 678912345 dae = 789123456 dai = 891234567 efg = 912345678 このような二つのテキストがあったら b.txtからa.txtの文字列を検索してc.txtに抽出するようにしたいのです。 なので、文字列を抽出したc.txtは以下のようになっているはずです。 c.txt aac = 234567891 bcf = 456789123 cag = 678912345 dai = 891234567 こんな感じです。 必要な文字列を一括で抽出するソフトはありますでしょうか? ちなみに検索文字列は300弱あります。 当方 windows 7 64bitでwordとexcelは入っております。 もし、良いソフトがありましたら教えてください。 また、excelやwordのマクロでできるなら、優しく教えてください。 当方excelは初心者なもので… よろしくお願いします。

  • 【コマンドプロンプト】リストファイルを読む方法

    この度はお世話になります。 コマンドプロンプトを使用し、フォルダ名が 多数書かれているtxt(リストファイル.txt)を読み込み、 リストに載っている物に対して特定の処理 (フォルダ名を小文字に変更)を行おうと考えております。 -リストファイル.txt- AAAA BBBB CCCC ---------------- まず、リストファイルを読み込んで一番初めに 書かれているAAAAフォルダの名前を変更し、 続いてフォルダBBBBの名前を変更するなどの 処理を行いたいのですが、 どのように記述を行えば教えていただけませんでしょうか

  • パスからファイル名を抽出

    度々お世話になります。 C++でファイルパスからファイル名を求めるには どのようにすればよいでしょうか? 例) "C:\Program Files\Folder1\FileName.txt"という 文字列からFileName.txtだけを抽出したい 初心者で申し訳ないですが、ご教示ください。

  • ファイル比較結果を保存できるソフトを探しています

    ファイル比較ツールを探しています。比較した後に、違いがあった部分だけ別ファイルに保存してくれるツールはありませんでしょうか。 例としては以下のようなイメージです。 sample1.txtとsample2.txtを比較するとsave.txtを保存できる感じです。 例では数行しかないですが、実際は6000行以上あります。 sample1.txt a b c d e sample2.txt a c c d d save.txt c d よろしくお願いします。

  • クライアント(WINDOWS)のファイルを読取

    WEBサーバー(Apache、OSはLinux)にPHPプログラムが稼動中。 このプログラムをアクセスするクライアント(Windows XP) のC:\CSV\test.csvファイルを読取る方法教えて頂けますでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • 実行オブジェクトからソースを抽出することは可能ですか?

    Windows2000からUnixサーバにLAN経由でアクセスして、 gccコマンドでコンパイルしたCの実行オブジェクトファイルから Cのソースを抽出する方法はありますでしょうか。 解答の程、宜しくお願い致します。

  • VBAでEXCELファイルからデータを抽出する方法

    VBAで、サーバーにある大量のデータを含むCSVファイルから、ある条件に一致するデータを抽出する方法を教えてください。 (例)  コード   名称  在庫数  その他データ  A12300  ○○○  999   XXXXXXXX  A12400  ○○○  999   XXXXXXXX  B12500  ○○○  999   XXXXXXXX  B11100  ○○○  999   XXXXXXXX  C11200  ○○○  999   XXXXXXXX 上記データからコードの一桁目が「A」と「C」のものを抽出する場合の、VBAを教えてください。 抽出後、EXCELの別ファイルに上書き保存します。 デイリーで処理をするので、VBAで自動化したいのです。 よろしくお願い致します。