RcloneViewでクラウド同期のタイムスタンプ不一致エラーを解決する
タイムスタンプの不一致により、rcloneは変更されていないファイルを再転送してしまい、帯域幅と時間を無駄にします。このガイドでは、なぜこの問題が発生するのか、そしてRcloneViewで正しく処理するための設定方法を説明します。
rcloneが2つの場所間でファイルを同期する際、更新日時のタイムスタンプを比較してどのファイルを更新する必要があるかを判断します。ソースと宛先が同じファイルに対して異なるタイムスタンプを報告した場合、たとえ1秒の違いであっても、rcloneはそのファイルを変更されたとみなして再度転送します。これにより不要な転送、帯域幅コストの増大、そして完全には終わらないように見える同期ジョブが発生します。この問題は、異なるクラウドプロバイダー間で同期する場合や、タイムスタンプの扱いが異なるローカルストレージとクラウドリモート間で同期する場合に特によく見られます。

すべてのクラウドを一か所で管理・同期
RcloneViewはrcloneのクロスプラットフォームGUIです。フォルダを比較し、ファイルを転送・同期し、クリーンなビジュアルインターフェースでマルチクラウドのワークフローを自動化できます。
- ワンクリック操作: コピー · 同期 · 比較
- 信頼性の高い自動化のためのスケジューラーと履歴
- Google Drive、OneDrive、Dropbox、S3、WebDAV、SFTPなどに対応
コア機能は無料。Plusで自動化機能を利用可能。
タイムスタンプ不一致が発生する理由
タイムスタンプは一見単純に思えます。ファイルが特定の時刻に変更された、というだけのことです。しかし、クラウドプロバイダー全体で見ると実際にはもっと複雑です。同じファイルがソースと宛先で異なる更新日時を報告する原因はい くつかあります。
プロバイダー間のクロックのずれ
各クラウドプロバイダーは独自の内部クロックを保持しています。ほとんどはNTPを使用してミリ秒単位で同期されていますが、ファイルに対して保存されるタイムスタンプは、アップロード処理のどの時点で設定されるかがプロバイダーによって異なります。あるプロバイダーはアップロード開始時刻を記録し、別のプロバイダーは完了時刻を記録することがあります。大きなファイルの場合、この差は数秒以上になることもあります。
タイムゾーンと精度の違い
プロバイダーによってタイムスタンプをUTCで保存するものもあれば、ユーザーのローカルタイムゾーンで保存するもの、さらには精度を切り捨てるものもあります。例えば:
- Google Drive はミリ秒単位の精度で更新日時を保存し、カスタムの更新日時を設定できます。
- OneDrive は秒単位の精度で更新日時をサポートします。
- Amazon S3 はオブジェクトメタデータ内でネイティブに更新日時をサポートしておらず、代わりにアップロード時刻をlast-modifiedヘッダーとして記録します。
- Dropbox はクライアント側で設定された更新日時を保持しますが、秒単位までです。
- SFTP はリモートファイルシステムに依存し、秒単位またはマイクロ秒単位の精度になる場合があります。
ミリ秒単位の精度を持つプロバイダーから秒単位の精度のプロバイダーへ同期する場合、丸め処理によって常に1秒(またはそれ以下)の食い違いが発生します。
更新日時がサポートされていない
一部のクラウドストレージバックエンドは、更新日時の保持自体をサポートしていません:
- S3互換ストレージ(AWS S3、Wasabi、S3モードのBackblaze B2、Cloudflare R2)はアップロード時刻を保存し、元のファイルの更新日時は保存しません。rcloneはオブジェクトメタデータ(X-Amz-Meta-Mtime)に元の更新日時を保存することでこれを回避していますが、これは最初のアップロード時にrcloneによってメタデータが設定されている場合にのみ機能します。
- プロバイダーのWebインターフェースや他のツールを通じてアップロードされたファイルにはこのメタデータがなく、それ以降の同期で不一致が発生します。