1

私のタスク:サーバーAの特定のディレクトリで新しい/更新されたファイルを探す必要があります。このディレクトリに新しい/変更されたファイルが存在する場合は、そのファイルをサーバーBにFTPで転送する必要があります。

Autosysとシェルスクリプトでこれを行うことはできますか?または、Javaプログラムがこのタスクにより適していますか?

Autosysを使用すると、ファイルウォッチャージョブを設定できます。成功すると、別の仕事をトリガーできます。しかし、このジョブはどのようにしてファイル名を知るのでしょうか?ファイルウォッチャーは、ファイル名をパラメーターとして別のジョブに渡すのに十分スマートですか?

助けてください....

4

2 に答える 2

4

ファイルウォッチャージョブは、ファイルの存在チェックとサイズチェックを行うジョブです。事前にファイルの名前を知っている必要があります。あなたの場合、事前に名前がわからない新しいファイルをいくつでも受け取ることができる場合、ファイル監視ジョブは機能しません。

もっともらしい解決策は次のとおりです。

  1. シェルスクリプトを書く
    • 監視しているディレクトリを取得ls -lし、ファイルに保存します
    • このファイルを、スクリプトの最後の実行で生成されたファイルと比較します
    • 新しいファイルと変更されたファイルを見つけて、宛先に ftp します
  2. autosys でスクリプトを定期的に (たとえば 10 分ごとに) 実行するようにスケジュールします。
于 2011-10-27T14:56:54.820 に答える
0
  1. シェルスクリプトを書く-a)。そのディレクトリにcdしますb)。findコマンドを使用してすべてのファイルを検索します。たとえば、findでファイル拡張子を選択できます。*.txtまたは*.csv。特定の期間より古くないファイルをチェックしたい場合は、時間フィールドを選択することもできます。または、この場合、ファイルのバージョン管理を維持できます。ファイルが到着し、findコマンドで検出されると、ファイルの名前を変更できます。これにより、FTPで転送する最新のファイルを確実に入手できます。何日後にそれらを持ちたくないロジックを作成することにより、古いファイルをアーカイブまたはパージすることができます。c)。検索の出力をファイルに送信し、ファイルが空でない場合はファイルをテストします。そのファイルをサーバーBに転送します。
  2. ファイルの到着頻度に応じて、数分ごとに実行されるジョブ内でこのスクリプトをスケジュールします。
  3. 成功条件で、ジョブの前回の実行が成功したかどうかを確認します。
于 2013-01-02T23:04:42.913 に答える