ストリーミング中に「rsync」

ストリーミング中に「rsync」

この質問は、本質的に使用経験が不足しているために発生しますrsync。重複する場合はすぐに削除いたします。

/dir-scrセンサー読み取り値を介して生産データが継続的に供給されるローカルフォルダがあります。約10分ごとにyyyymmddhhmmss.datタイムスタンプ付きのファイル名を含むファイルが作成され、サイズは約0〜40 MBです。そして閉じます。約10分後に別のファイルが作成されます。

複数のアップデートのバッチ実行を行いました。

$ rsync -azvP /dir-src/* host-dst:dir-src/

部分的に埋められたファイルを正常にコピーして置き換えて、40 MB のフルファイルと 25 MB の現在のファイルをコピーし、次のアップデートでは、25 MB ファイルを 40 MB のフルバージョンに置き換えます。

現在は、まだコピーされていないファイルを誤って削除しないように手動で移動しています。

rsyncそれでは、次のフラグのいずれかを使用したいと思います。

  • --exclude
  • --delete-excluded
  • --delete-after
  • --remove-source-files

しかし、私は彼らの動作については確信していません。

問題は、これを使用してrsync10分より古いファイルを移動し、/dir-srcすでに存在する場合にのみ削除する方法ですhost-dst:dir-dst/

ベストアンサー1

rsyncs を使用する組み込み削除オプションは次のとおりです。正しい方法ではありませんこの問題を解決するために。次のことを行う場合:

$ rsync -azvP --remove-source-files /dir-src/* host-dst:dir-src/

rsyncが部分的に入力されたファイルを転送してから削除する状況が発生する可能性があります。同じ名前でファイルを再生成すると、rsyncはターゲットシステムのコピーを上書きします。したがって、ファイルの最初の半分が失われます。

たぶんあなたはこれを考慮したいかもしれません。 rsyncが正常に転送を実行するようにした後予約されたこと10分ごとに実行し、同様の操作を行います。

$ find /dir-src -type f -mmin +15 -exec rm -f {} +

dir-srcその後、このディレクトリで15分より古いすべてのファイルを見つけて削除します。ここでは、ファイルを埋めるのに必要な最大時間が15分であるとします。必要に応じてこの値を調整する必要があります。また、テスト時-exec rm -f {} +に置き換えると、-printfindに破壊的な操作を実行する前に実際に削除したいファイルだけを選択するように設定できます。

あなたの意見では、ネットワーク接続が不安定であり、rsyncが正常に完了しない可能性があるという懸念があると述べました。セカンダリディレクトリを作成した後にこの問題を解決する1つの方法は次のとおりです。

  1. 15分ごとに15分より古いすべてのファイルがからに移動さdir-srcれますdir-aux
  2. 10分ごとにからのファイルをrsyncdir-auxしますhost-dst:dir-src
  3. 60分ごとに削除しますdir-aux

これにより、ファイルが削除される前にrsyncを5〜6回実行できます。接続状態によっては、これで十分かもしれません。その後、テスト結果に応じて60分を延長または短縮できます。

おすすめ記事