rsync dstタイムスタンプがsrcでコンテンツが最後に送信された時刻を反映させるにはどうすればよいですか?

rsync dstタイムスタンプがsrcでコンテンツが最後に送信された時刻を反映させるにはどうすればよいですか?

ネットワーク経由でsrcからdstにファイルを同期しています。 Linuxのマニュアルページで多くのrsyncオプションを検索しているので、助けが必要です。

ターゲットのプロセスは、ソースから「新しく到着した」ファイルに応答します。たとえば、ソースファイルが2日前に変更されたがrsync5分前に転送されなかったとします。最新のタイムスタンプに基づいて新しく到着したファイルを検出できます。

したがって、必要なタイムスタンプ操作が必要です。

  • dstファイル変更タイムスタンプは、rsync転送によってエントリが最後に追加された時刻を示す必要があります。
  • rsyncが新しいコンテンツを送信せずにsrcとdstを比較するとき、つまりdstがすでにsrcと一致している場合は、dstファイル変更タイムスタンプを変更しないでください。

どのrsyncオプションが望ましい動作を提供しますか?

ベストアンサー1

これを効果的に実行することはできません。rsyncネットワークを介した長い転送を短縮する主な手段としてタイムスタンプを使用してください。

このタイムスタンプ操作を本当にしたい場合は、

  1. rsyncターゲットファイルのタイムスタンプは、転送によってコンテンツが最後に追加された時間を示す必要があります。
  2. rsync新しいコンテンツを転送せずにソースとターゲットを比較するときは、ターゲットファイルのタイムスタンプを変更しないでください。

その後、すべてのファイル転送の考慮事項については、最大で各ファイルの完全なチェックサムで終了します。したがって、100個のファイルを転送し、その100個のファイルがソースとターゲットの両方に存在する場合は、実行されるrsyncたびに100個のファイルがすべてチェックサムを介して変更されたことを確認します。想像できるように、これは非常に非効率的です。

rsync --archive --no-times --checksum /source/path remotehost:/destination/path

ユースケースについては説明していませんが、一般的な使い方は、rsyncファイル修正時間を転送して送信されたように見えるファイル転送を防ぐことです。

rsync --times /source/path remotehost:/destination/path    # or --archive

いつものように--archive= -a--times= -t--no-times= --no-t--checksum=-c

おすすめ記事