rcloneの自動処理の終了ステータスを確認する
自動処理で転送を成功として記録する前に、rcloneの実行直後のステータスを取得し、最後のエラーを保持して、転送先のバイトデータを比較します。
最終確認日
スクリーンショットは英語版の画面です。
rcloneのステータスはコマンドの直後、別のシェルコマンドで上書きされる前に取得してください。終了コード0は、その実行で未解決のエラーがないことを示します。転送が不要だった場合も含まれるため、内容が一致している証拠にはなりません。

手順
- 転送元と転送先を明示し、保存されるログと統計情報を指定して、スケジュールされたコピーまたは手動コピーを実行してください。
- POSIXシェルでは次の行で
status=$?を代入してください。PowerShellでは一覧表示やほかの確認をする前に$status = $LASTEXITCODEを代入してください。 - 最終的な転送概要と、それまでのすべてのエラーを保持してください。複数ファイルの処理が失敗しても、先に処理したファイルは正常に保存されている場合があります。
statusがゼロ以外の場合はジョブを失敗として記録し、再試行前に転送先を確認してください。ログを消去したり、バッチ全体を自動で再実行したりしないでください。- コピーのステータスがゼロの場合は、
rclone check SOURCE DESTINATION --downloadなどで別途読み取り専用の比較を実行してください。そのコマンドのステータスは独立して取得します。 - 両方のステータスがゼロで、転送先の代表的なバイトデータが一致する場合にのみ成功を報告してください。実行時刻、パス、rcloneのバージョン、件数を受領情報とともに保存してください。
dosyaのWebDAVでは、同名のファイルに対するPUTが成功すると新しいファイルバージョンが作成されます。後でエラーが発生しても、そのバージョンはロールバックされません。同様にcopyでは転送先だけにあるファイルが残ります。その存在は、この実行で転送元を処理した証拠にはなりません。

確認できる結果
自動処理は、転送プロセスと独立した比較が両方とも正常終了した後にのみ成功を記録し、どの実行か特定できるログを残します。ステータスがゼロ以外の場合は証拠を保持し、後続の成功時の処理を実行しません。
シェルのパイプラインでは、ステータスを正しく取得しないと、別のプロセスの終了コードに隠れてrcloneのコードが分からなくなる場合があります。通知を信頼する前に、意図的に存在しない転送元を指定してラッパーをテストし、その後テスト用のパスを削除してください。
関連ガイド
この記事は役に立ちましたか?
評価の結果を読み込んでいます…
投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。
質問と回答
このガイドの手順について質問できます。質問は確認後に公開されます。
公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。
質問を読み込んでいます…
dosyaアカウントにサインインすると、質問を投稿できます。