リクエストで受け取ったデータで構成される圧縮ファイルを生成するサービス「A」があります。並行して、これらの圧縮ファイルを消費する別のサービス「B」があります。対応する「準備完了」ファイルを持つファイルを一覧表示する
"B"は、完全に書き込まれていない限り、ファイルを消費してはいけません。サービスは、上記の拡張子とともに生成されたファイルと全く同じ名前のサービス "A"によって作成された ".ready"ファイルを探すことによってこの情報を推測します。圧縮が完了したらサービス "B"はApache Camelを使用してこのフィルタリングを行います。
今、同じ圧縮ファイルが必要なシェルスクリプトを作成していますが、これはシェルで同じフィルタリングを実装する必要があります。私はこのスクリプトを書くのに助けが必要です。私はコマンドを知っていますが、ナイーブなシェルユーザーですので、非常に知識が限られています。
例:
圧縮ファイル:sumit_20171118_1.gz準備 ファイル対応
:sumit_20171118_1.gz.ready
別の圧縮ファイル:sumit_20171118_2.gz
ありません準備ができたファイルをこれには存在します。
上記のファイルのうち、最初のファイルのみが、対応するレディファイルを持っているので、ピックアップする必要があります。
'.ready'サフィックス? – melpomene
はい、確かにオプションです。私は、これを行ういくつかのコマンド/ビルドされた機能が存在するかどうか疑問に思っていました。あるいは、一般的に、そのようなケースに対処するための標準的な方法がある場合。 –
**サービスB **が圧縮ファイルを探している場合、通常は**サービスA **は '.inprogress'のような拡張子でファイルを書き込み、ファイルが完全に書き込まれると**サービスA **その名前が '.gz'で終わるように変更します。これにより、** Service B **に完全なファイルをアトミックにリリースします。 –