転送が完了した後に一連のファイルを処理する方法

転送が完了した後に一連のファイルを処理する方法

私が所有しているもの

サーバーが2つあります。彼らに電話sen.derしてくださいrecei.ver

送信者はファイルを生成します。これらのファイルのサイズは20Kbから30Gbです。

ファイル作成後にファイルサイズを確認してrecei.ver10Mb未満の場合は、SFTP経由でファイルを送信するスクリプトを作成しました。それ以外の場合、10Mbより大きい場合は、10Mbチャンクに分割してrecei.verSFTP経由で送信します。

転送時間は明らかにファイルサイズと回線速度によって決まります。この回線速度は100Kbpsほど低く、理論的には最大のファイルを転送するのに最大11時間かかることがあります。

私は必要です

私が望むのは、recei.verファイルを1つの大きなファイルに自動的に再構成することです(そして、解凍、通知メールの送信など、いくつかの追加タスクを実行することです)。

私は何ですか?できるする

inotifywaitこれらのオプションを使用して-m表示し、作成中のファイルのファイルサイズを確認し、生成された最後のファイルが10,485,760バイト未満の場合を分類できます。

その後、このチャンクをキャプチャしてテストtarを使用できます。tar tf <filename>; echo $?

もっと良い方法がありますか?

うまくいくかもしれませんが…エレガントに見えません。もっと良い方法がありますか?

ベストアンサー1

ファイルサイズの一部を暗黙的な終了マークとして使用することは脆弱です。より良いアプローチは、個々の部品を最初に送信し、部品リストを一覧表示する制御ファイルを送信し(送信問題を検出するためにsha256チェックサムを使用)、受信プログラムが再組み立てを開始する前にすべての部品が送信されたことを確認できるようにするです。

おすすめ記事