rsyncはアクセス時間をどのように維持しますか?

rsyncはアクセス時間をどのように維持しますか?

私はFedora 33(GNOME)でrsync-3.2.3を使用しています。

atimeしかし、ファイルとフォルダのアクセス時間()をどのように保存できますか?

mtimeこのコマンドを使用すると、修正時間()のみを保存できます。

rsync -t

答え1

保留atime(接続時間)をリクエストできます。源泉この--noatimeフラグを使用しますがrelatime(最新のデフォルト)としてマウントされたファイルシステムではnoatime必ずしも必要ありません。

rsync -av --noatime src/ dstHost:dst/

atimeターゲットシステムにそのままにするオプションがないことがわかりますrsync。ターゲットシステムにアクセスできる場合は、コピーしたツリーをナビゲートできます。これはGNU / Linuxタイプのシステムで機能します。

( cd src/ && find -type f -print0 ) |
    ssh dstHost 'cd dst && while IFS= read -r -d "" f; do  touch -a -d "@$(stat -c %Y "$f")" "$f"; done'

または、2つのローカルファイルシステム間のコピーを処理する場合

( cd src/ && find -type f -print0 ) |
    ( cd dst && while IFS= read -r -d "" f; do  touch -a -d "@$(stat -c %Y "$f")" "$f"; done )

デフォルトでは、両方のスニペットは同じことを行います。つまり、ソース内の各ファイルについて、ターゲットでそのファイルを見つけてatime一致するように更新しますmtime

答え2

rsyncバージョン3.2.0以降、atimeに影響を与える2つのフラグがあります。

  • --atimes, -U 保有アクセス(利用)時間
  • --open-noatime 開いたファイルの時間を変更しないでください

これの完全な説明は次のとおりです。

       --atimes, -U
              This  tells  rsync to set the access (use) times of the destina‐
              tion files to the same value as the source files.

              If repeated, it also sets the --open-noatime option,  which  can
              help you to make the sending and receiving systems have the same
              access times on the transferred files  without  needing  to  run
              rsync an extra time after a file is transferred.

              Note  that  some  older rsync versions (prior to 3.2.0) may have
              been built with a pre-release --atimes patch that does not imply
              --open-noatime when this option is repeated.

       --open-noatime
              This  tells rsync to open files with the O_NOATIME flag (on sys‐
              tems that support it) to avoid changing the access time  of  the
              files  that  are being transferred.  If your OS does not support
              the O_NOATIME flag then rsync will silently ignore this  option.
              Note  also  that  some filesystems are mounted to avoid updating
              the atime on read access even without the O_NOATIME  flag  being
              set.

したがって、テストによって確認されたこれに対する私の解釈は、次にこのrsyncがatimeを更新するのを防ぎ、atimeを次にsrcコピーすることです。srcdest

rsync -UU <src> <dest>

関連情報